XML的简单用法

XML的简单用法


XML解析

什么是XML?在刚学完的课程中,小rat所学到的信息是XML不仅仅指的是本地xml文件,也可以是通过网络接口所返回的数据。例如此图:

那么如何解析XML文件呢?本文将分别讲述用Dom4j和xpath解析本地xml文件和网络xml文件。

本地XML文件

首先我们要知道如果我们要读取或者写入任何东西(不是我们所写的代码)一定要用到字节流(InputStream和OutputStream)。当然,我们也需要引入jar包这个好东西~~~

引入的jar包分别为:dom4j、jaxen和xstream

我们先解析本地文件,假设我们要解析的xml文件如下图所示:

<persons id="1">
  <list>
    <person>
      <name>迪迦奥特曼</name>
      <age>4000</age>
    </person>
    <person>
      <name>戴拿奥特曼</name>
      <age>600</age>
    </person>
  </list>
</persons>

DOM4J解析

第一步,我们要创建输入流:FileInputStream fileInputStream = new FileInputStream("xml文件的路径");

第二步:创建SAXReader对象:SAXReader saxReader = new SAXReader();

然后调用SAXReader.read的方法 : Document doc = saxReader.read(fileInputStream);

这里的doc指的就是我们所要解析的xml文件!!!!!!

那么我们要如何读取xml的数据呢? 万事开头难,我们既然要读取xml文件,我们就要先找到他的根标签。

第四步:Element root= doc.getRootElement();

这里可以用两种方法得到我们的 迪迦奥特曼 和 戴拿奥特曼

第一种用Dom4j 一步一步的往下解析:我们可以看到在两个<person>标签外面,还有一个<list>标签,那么我们就要进入到<list>标签里,才能得到<person标签>

第五步:Element list = root.element(""+list);

第六步:List<Element> elements = list.elements(); 通过elements方法得到在<list>标签下所有的标签,如此我们就可以开始解析了

for (Element element : elements) {
            System.out.println(element.elementText("name"));
            System.out.println(element.elementText("age"));
        }

elementText的方法是通过括号里的字段,对应标签里的的字段,从而得到数据。

XPATH解析

xpath就厉害了,可以通过(“标签”),直接得到你想要的字段,代码如下

FileInputStream fileInputStream = new FileInputStream("Demo01.xml");
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(fileInputStream);
Element rootElement = doc.getRootElement();
//selectNodes的方法是通过路径,直接得到你想要的标签的所有的值
//如果你只想要一个,那你可以使用selectSingleNode()方法
List<Node> name = rootElement.selectNodes("//name");
        List<Node> age = rootElement.selectNodes("//age");
        for (int i = 0; i <name.size() ; i++) {
            System.out.println(name.get(i).getText());
            System.out.println(age.get(i).getText());
        }

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值