1、xml概念(点击查看百度词条)
2、xml的语法
* XML必须有关闭标签
* 区分大小写
* 属性需要有引号
* 标签必须正确嵌套
3、xml元素的命名规范
4、xml的解析
* XML的解析: 从XML文档中获得想要的数据。
*XML的解析方式:
* DOM解析:DOM:DocumentObject Model.
* SAX解析:SimpleApi for XML.
*DOM和SAX的区别:
下面是dom4j和dom4j+xpath两种解析方式
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML的注释 -->
<!DOCTYPE persons SYSTEM "domo1.dtd" >
<persons>
<person id="aaa">
<name>dd华</name>
<age>38</age>
<sex>男</sex>
</person>
<person id="bbb">
<name>李ff</name>
<age>28</age>
<sex>男</sex>
</person>
</persons>
DOM4J的入门案例步骤:
* 【步骤一】导入jar包.dom4j-1.6.1.jar
* 【步骤二】创建解析器
* 【步骤三】解析文档获得代表文档的Document对象.
* 【步骤四】获得跟节点.
* 【步骤五】从跟节点下查找其他的节点.
package com.xml解析;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class 旧方式 {
@Test
// 传统方式
public void old11() throws Exception {
// 创建解析器
SAXReader reader = new SAXReader();
// 解析xml的文档
Document document = reader.read("xml/persons.xml");
// 获得根节点
Element root = document.getRootElement();
// System.out.println(root.getName());
// 查找根节点下的子节点 .element:或者子节点 elements():将所有的子节点返回一个数组;
Element pElement = root.element("person"); // 查找的是第一个person元素
//root.elements("person").get(1); // 查找的是返回数组的第二个person元素
Element nElement = pElement.element("name");
Element aElement = pElement.element("age");
Element sElement = pElement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
}
}
DOM4J+Xpath的入门案例步骤:
* 【步骤一】导入jar包.dom4j-1.6.1.jar ,jaxen-1.1-beta-6.jar
* 【步骤二】创建解析器
* 【步骤三】解析文档获得Node节点
* 【步骤四】将node(表示多态节点)转换为元素节点
* 【步骤五】从元素节点下查找其他的节点.
package com.xml解析;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class Xpath方式 {
@Test
// Xpath方式
public void xpath() throws Exception {
// 创建解析器
SAXReader reader = new SAXReader();
// 解析xml返回document对象
Document document = reader.read("xml/persons.xml");
// Node node = document.selectSingleNode("//person");
Object obj = document.selectNodes("//person").get(1);
Element ePlement = (Element) obj;
/*
* //将person下节点返回一个集合里 List<Node> list = document.selectNodes("//person");
* //拿到第二个person节点 Node node = list.get(1);
*/
// 将node(表示多态节点)转换为元素节点
//Element ePlement = (Element) node;
Element nElement = ePlement.element("name");
Element aElement = ePlement.element("age");
Element sElement = ePlement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
/*
Element pElement = (Element) node;
Element nElement = pElement.element("name");
Element aElement = pElement.element("age");
Element sElement = pElement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
*/
/*
* // 使用selectNodes方法返回一个集合
List<Node> list = document.selectNodes("//name");
for (Node node : list) {
Element element = (Element) node; // 将跟节点转换为元素节点
System.out.println(element.getText());
}
*/
// List<Node> list = document.selectNodes("//person['@id']");
// for (Node node : list) {
// Element element = (Element) node;
// System.out.println(element.attributeValue("id"));
// }
}
}