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());
}