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>

原文地址:http://blog.51cto.com/13579086/2067627

时间: 2024-08-29 09:43:13

dom和xpath解析xml的相关文章

XML学习笔记(二):使用 DOM和SAX 解析XML :

一.XML解析的简介 1.一般来说xml解析的方式有两种,Dom与SAX,且各有优缺点.pull是第三种方法见:pull解析XML 1)DOM:dom对象树 ①.整个XML放入内存,转换为Document对象: ②.每个元素,转换成Element对象 ③.文本,转换成Text对象 ④.属性,转换成Attribute对象 优缺点:元素的CRUD比较简单,但是内存消耗大,大的xml文档不适合. 补充:内存不足时,可以修改参数,调整JVM的内存大小 1.java.lang.OutOfMemoryErr

Xpath解析xml

Xpath解析xml其实最主要的是查找xml文档中信息,而且不需要了解xml文档结构 package com.huawei.xml; import java.io.InputStream;import java.util.List; import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.input.SAXBuilder;import org.jdom2.xpath.XPathExpression;import or

Dom方法,解析XML文件

Dom方法,解析XML文件的基本操作 1 package com.demo.xml.jaxp; 2 3 import java.io.IOException; 4 5 import javax.xml.parsers.DocumentBuilder; 6 import javax.xml.parsers.DocumentBuilderFactory; 7 import javax.xml.parsers.ParserConfigurationException; 8 import javax.x

JAVA调用返回XML格式数据的WebService,并通过XPath解析XML的应用

一.获取WSDL定义和endpoit地址 WSDL定义地址由开发者提供,为http://10.10.xx.xxx/webservice/Pangus.SCC.OracleEBS.WebService.dll/wsdl/IWebService 通过浏览器访问WSDL地址,可以看到endpoint地址的说明: <service name="IWebServiceservice"> <port name="IWebServicePort" binding

DOM/SAX/PULL解析XML

1. 代码结构 InterfaceXMLParseService 解析接口, DOM/SAX/PULL分别实现这个接口 XML来源是assets目录下的persons.xml文件 2. 代码 //persons.xml <?xml version="1.0" encoding="utf-8"?> <persons> <person> <id>1</id> <name>Tom</name&g

DOM和SAX解析XML的区别

解析xml有四种方法:DOM,SAX,DOM4j,JDOM.     我们主要学了两种:DOM和SAX.     DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件.各有各的好. DOM和SAX的不同:     1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中.从而消耗很大的内存空间.而SAX是基于事件的.当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间.     2. DOM可以读取XML也可以向XM

Python:minidom模块(DOM写入和解析XML)

一.DOM写XML文件 #导入minidom from xml.dom import minidom # 1.创建DOM树对象 dom=minidom.Document() # 2.创建根节点.每次都要用DOM对象来创建任何节点. root_node=dom.createElement('root') # 3.用DOM对象添加根节点 dom.appendChild(root_node) # 用DOM对象创建元素子节点 book_node=dom.createElement('book') # 用

Java sax、dom、pull解析xml

-------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于android等移动设备 SAX全称是Simple API for Xml,既是指一种接口,也是一个软件包 作为接口,sax是事件驱动型xml解析的一个标准接口 >Sax特点 1. 解析效率高,占用内存少 2.可以随时停止解析 3.不能载入整个文档到内存 4.

Python minidom模块(DOM写入和解析XML)

一.DOM写XML文件 1 #导入minidom 2 from xml.dom import minidom 3 4 # 1.创建DOM树对象 5 dom=minidom.Document() 6 # 2.创建根节点.每次都要用DOM对象来创建任何节点. 7 root_node=dom.createElement('root') 8 # 3.用DOM对象添加根节点 9 dom.appendChild(root_node) 10 11 # 用DOM对象创建元素子节点 12 book_node=do