访问网络文件,并解析它,然后保存

首先在tomcat服务器下建立student.xml文件,注意文件存放位置

student.xml内容为:

<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<id>0001</id>
<name>小明</name>
<class>一班</class>
</student>

<student>
<id>0002</id>
<name>小红</name>
<class>二班</class>
</student>

<student>
<id>0003</id>
<name>小强</name>
<class>三班</class>
</student>

</students>
`

编写ParseXml.java类去解析它,并保存

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.HttpURLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
 *
 * @author 小宋
 */
public class PraseXml {

    public static void main(String[] args) {
        //解析網絡中的xml文件 我是訪問本地的服務器
        String afterPraseFromXml = praseXml("http://localhost:8080/firsrt/student.xml");
        //把解析后的結果保存在文件中
        boolean flag = saveXml(afterPraseFromXml, "d://a.txt");
        System.out.println("保存成功" + flag);
    }

    /**
     * 解析xml
     *
     * @param path
     * @return
     */
    public static String praseXml(String path) {
        StringBuffer sb = null;
        InputStream ism = null;
        HttpURLConnection connection = null;
        URL url = null;
        try {
            url = new URL(path);
            connection = (HttpURLConnection) url.openConnection();//獲取連接
            ism = connection.getInputStream();
//            BufferedReader reader=new BufferedReader(new InputStreamReader(ism));
//            StringBuffer sb=new StringBuffer();
//            String line=null;
//            while((line=reader.readLine())!=null){
//                sb.append(line);
//            }
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document d = db.parse(ism);
            Element element = d.getDocumentElement();
            //獲取students下的子節點,即 student
            NodeList list = element.getChildNodes();
            sb = new StringBuffer();
            for (int i = 0; i < list.getLength(); i++) {
                NodeList nodes = list.item(i).getChildNodes();//獲取student節點下的子節點
                for (int j = 0; j < nodes.getLength(); j++) {
                    if (nodes.item(j).getTextContent() != "") {
                        sb.append(nodes.item(j).getTextContent());//把解析后的內容保存在sb對象中
                    }

                }
            }
//             Element element= d.getDocumentElement();
//           Node node=  element.getAttributeNode("name");
//            System.out.println(node.getNodeName());
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (ism != null) {
                    ism.close();
                    ism = null;
                }
                if (connection != null) {
                    connection.connect();
                    connection = null;
                }
            } catch (IOException ex) {
                Logger.getLogger(PraseXml.class.getName()).log(Level.SEVERE, null, ex);

            }
        }
        return sb.toString().trim();
    }

    /**
     * 保存到文件中
     *
     * @param contentString
     * @param filePath
     * @return
     */
    public static boolean saveXml(String contentString, String filePath) {
        File file = new File(filePath);
        BufferedWriter out = null;
        try {
            if (file.exists()) {
                file.delete();
            }
            file.createNewFile();
            out = new BufferedWriter(new FileWriter(file));
            out.write(contentString, 0, contentString.length() - 1);

            return true;
        } catch (Exception ex) {
            Logger.getLogger(PraseXml.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (out != null) {
                try {
                    out.close();
                    out = null;
                } catch (IOException ex) {
                    Logger.getLogger(PraseXml.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

        return false;

    }
}

打开tomcat服务器,就可以编译运行了。

总结;快期末了,老师叫我每个人出些题,我是出两个题。而我想到的是一题是访问网络文件,然后解析,保存。运用到的知识点 HttpUrlConnection这个类,返回的数据我去解析它,然后写到文件中。也是一些基本的io操作。。。 对http协议在我的理解就是我们向服务器请求,然后服务器响应数据给你,比如我们在浏览器打开http://www.baidu.com 其实我们是请求了百度的服务器,然后百度服务器返回的是HTML,我们浏览器解析它,才显示界面。

时间: 2024-09-30 22:55:41

访问网络文件,并解析它,然后保存的相关文章

Windows Server 2012 R2 访问网络文件

环境 dc: server01: 默认存储路径 一.公用文件夹 路径:C:\Users\Public 权限:默认情况下everyone用户具有完全控制权 1.现在c盘下建立share文件夹及相关文件夹和文件 2.文件共享 3.在server01上访问共享 4.启用公用文件夹共享 打开网络共享中心,更改高级共享设置,然后如图所示 二.共享文件夹 1.共享文件夹权限 1)读取:查看文件名与子文件夹名称,产看文件内的数据,执行程序 2)更改(修改):新建与删除文件.子文件夹,更改文件内的数据 3)完全

UAC相关问题分析--使用管理员权限打开VisualStudio,无法访问网络磁盘,无法拖拽文件

搬运自http://wurang.me/2014/06/17/uac-problems.html [问题产生] 问题最初是在administrator权限下,visual studio 打开网络磁盘下的文件报错.经过几次调试,最终发现是问题是在管理员权限下,vs无法访问网络磁盘. Console.Write( System.IO.File.Exists(path)); 该结果返回False.为了确认是由于权限问题引起,使用非管理员权限打开vs,运行上面的程序,结果返回True. 至此问题确立:w

文件与网络、JSON解析

文件与网络.JSON解析   分类: OC语言基础 同步.异步.JSON解析.XML解析 NSData 字节数据存储,二进制存储,苹果中认为字符型和字节型都可以存,即计算机中所有类型的数据,主要用于网络传输数据的缓冲存储 GET请求,只支持255个字符 ,安全性较差,将请求信息附加在超链接上,较方便  POST请求,上传没有大小限制,请求信息在请求体内,在超链接上不能看到,安全性强,缺点:不方便 同步连接:UI “冻结” 异步连接:UI “不冻结” 异步连接,用代理:下载容易造成UI冻结,耗时,

.Net版SQLite无法访问网络位置的数据库文件-winOpen,os_win.c 36702异常

最近一个C#小程序,希望将SQLite数据库放在网络共享的位置,让多个客户端同时访问.却发现SQLite连接不上该网络位置的数据库,而如果数据库在本地则一切正常. 例如将SQLite数据库 test.dat 放在共享位置:\\System\Data\test.dat, 通过SQLite创建数据库连接,执行Open时,将抛掷异常: SQLite error (14): os_win.c:36702: (3) winOpen(D:\System\Data\test.dat) - 系统找不到指定的路径

关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。

起因:最近给Unity上的游戏写关于存档的脚本,使用了xml.然后发现每次文件保存时,也就是调用XmlDocument.Save()对象方法的时候就会报错说该文件路径分享异常啥的我也不记得了.然后搞了半天,无果.猜测原因可能是因为文件被占用的原因,遂简化代码在新的解决方案里重现异常. 如图: 运行报错,第33行,"文件正由另一进程使用,因此该进程无法访问此文件." 网上找答案,这个异常网上也有答案,虽然他们的代码不是xml相关的但是错误原理相同. 错误原因是:文件正在被流调用.要想保存

虚拟机下克隆3个centos系统并配置IP访问网络(转载)

此文是保证linux系统能够上网 先查看本机的IP 打开虚拟机,更改虚拟机为桥接方式 在第一个虚拟机上打开终端,在命令行输入setup,选择NETWORK CONFIGRATION 回车后, 配置IP, 保存,重启网络  service network restart 第一台机器就可以访问网络了 现在配置第二台机器 第二台机器和第一台机器步骤一致,就是多了个问题需要如下解决: 在克隆第二台虚拟机,发现启动后不能配置IP地址等信息,使用linux命令: "ifup eth0"也不能激活网

Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析

Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 OfficePowerPointWord格式解析 转载http://www.cnblogs.com/mayswind/archive/2013/03/17/2962205.html [题外话] 这是2010年参加比赛时候做的研究,当时为了实现对Word.Excel.PowerPoint文件文字内容的抽取研究

Android使用Http协议访问网络

Http协议工作原理大致可以理解为:客户端向服务器发出一条HTTP请求,服务器收到请求后返回一些数据给客户端,客户端对收到数据解析. 在Android6.0以前,Android上发送Http请求主要有两种方式:HttpURLConnection和HttpClient.其中HttpClient存在过多的API且难扩展,于是在Android6.0系统中,HttpClient被完全移除,如需使用,需导入相应文件.这里介绍最近我最近学习的HttpURLConnection的基本使用方法,然后接下来介绍一

使用python访问网络上的数据

这两天看完了Course上面的: 使用 Python 访问网络数据 https://www.coursera.org/learn/python-network-data/ 写了一些作业,完成了一些作业.做些学习笔记以做备忘. 1.正则表达式 --- 虽然后面的课程没有怎么用到这个知识点,但是这个技能还是蛮好的. 附上课程中列出来的主要正则表达式的用法: Python Regular Expression Quick Guide ^ Matches the beginning of a line