dom和xpath解析xml
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom和xpath解析xml相关的知识,希望对你有一定的参考价值。
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/**
* 解析xml
* @author WangShuang
*
*/
public class Demo {
/**
* 获取xml标签的文本内容和属性值
* @param args
*/
@Test
public void run1() {
try {
//1.创建解析器对象
SAXReader sax = new SAXReader();
//2.解析xml文档
Document document = sax.read("src/test.xml");
//3.获得跟节点
Element root = document.getRootElement();
//4获取学生节点
Element student = root.element("student");
//5获取学生姓名节点
Element name = student.element("name");
System.out.println(name.getText());
//获取学生属性编号的值
Attribute attribute = name.attribute("id");
System.out.println(attribute.getValue());
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* xpath获取xml标签的文本内容和属性值
* @param args
*/
@Test
public void run2() {
try {
// 1. 先创建解析器对象
SAXReader sax = new SAXReader();
//2 .解析xml文档
Document document = sax.read("src/test.xml");
// document是Node的子节点,能使用node节点对象的方法
Node node = document.selectSingleNode("//name");
// 获取学生姓名
System.out.println(node.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* xpath获取xml标签的文本内容和属性值
* @param args
*/
@Test
public void run3() {
try {
SAXReader sax = new SAXReader();
Document document = sax.read("src/test.xml");
List<Node> selectNodes = document.selectNodes("//name");
for (Node node : selectNodes) {
System.out.println(node.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
需要导入的jar包
<?xml version="1.0" encoding="UTF-8"?>
<Person>
<student>
<name id="01">张三</name>
<sex>男</sex>
</student>
<!-- <student>
<name id="01">lili</name>
<sex>nv</sex>
</student> -->
</Person>
以上是关于dom和xpath解析xml的主要内容,如果未能解决你的问题,请参考以下文章
Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)