xPath对xml文档的处理入门4
2012-11-15 17:37
309 查看
我测试的环境是:WindowsXP、eclipse3.2、jdk1.6、dom4j1.6.1.jar、z-dom4j-1.4.jar
其中dom4j1.6.1.jar、z-dom4j-1.4.jar都可以在本人的资源库中进行下载,还有Dom4j的API,以及学习文档。
xml文档是:
<?xml version="1.0" encoding="GBK"?>
<root name="根节点">
<book name="书" address="北京">
<titlechild name="1" address="北京" author="马士兵">CS从入门到精通</titlechild>
<titlechild1 name="2" address="天津" author="a马士兵" price="37">aCS从入门到精通titlechild1</titlechild1>
<titlechild2 name="3" address="南京" author="a马士兵" price="32">aCS从入门到精通titlechild2</titlechild2>
<titlechild name="4" address="上海" author="title2马士兵" price="55">title2CS从入门到精通</titlechild>
<titlechild name="5" address="西安" author="title3马士兵" price="34">title3CS从入门到精通</titlechild>
</book>
<title name="6" address="深圳" author="深圳1" price="34">深圳</title>
</root>
测试代码是:
package org.dom4j.document_study_XPath;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Test_XPath {
public static void main(String[] args) {
readexml("C:\\2.xml");
}
//解析原始的xml
public static void readexml(String xmlpath){
SAXReader readxml = new SAXReader();
Document doc = null;
try {
doc = readxml.read(new File(xmlpath));//解析原始的xml
TestSelectNodes_06(doc);
TestSelectNodes_07(doc);
} catch (Exception e) {
e.printStackTrace();
}
}
//通过节点的XPath路径(通配符*)获取document某个名称,属性的节点 document 一个Dom4j的Document对象
@SuppressWarnings("unchecked")
public static void TestSelectNodes_06(Document document) {
System.out.println("获取名称为book节点下的所有子节点:");
List<Node> nodelist =document.selectNodes("//book/*");
for(Node node1_2 : nodelist){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文档的所有节点");
List<Node> nodelist1 =document.selectNodes("//*");
for(Node node1_2 : nodelist1){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取名称为pricechild的节点的所有属性");
List<Node> nodelist3 =document.selectNodes("//title[@*]");
for(Node node1_2 : nodelist3){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
}
//通过节点的XPath路径(运算符|)获取document某个名称,属性的节点 document 一个Dom4j的Document对象
@SuppressWarnings("unchecked")
public static void TestSelectNodes_07(Document document) {
System.out.println("选取xml文件中所有book下的节点titlechild1和节点的titlechild2");
List<Node> nodelist =document.selectNodes("//book/titlechild2|//book/titlechild1");
for(Node node1_2 : nodelist){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文件中所有的titlechild1和titlechild2节点");
List<Node> nodelist1 =document.selectNodes("//titlechild2|//titlechild1");
for(Node node1_2 : nodelist1){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文件中所有titlechild1节点和root/book/title下的所有titlechild节点");
List<Node> nodelist3 =document.selectNodes("/root/book//titlechild|//titlechild1");
for(Node node1_2 : nodelist3){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
}
}
其中dom4j1.6.1.jar、z-dom4j-1.4.jar都可以在本人的资源库中进行下载,还有Dom4j的API,以及学习文档。
xml文档是:
<?xml version="1.0" encoding="GBK"?>
<root name="根节点">
<book name="书" address="北京">
<titlechild name="1" address="北京" author="马士兵">CS从入门到精通</titlechild>
<titlechild1 name="2" address="天津" author="a马士兵" price="37">aCS从入门到精通titlechild1</titlechild1>
<titlechild2 name="3" address="南京" author="a马士兵" price="32">aCS从入门到精通titlechild2</titlechild2>
<titlechild name="4" address="上海" author="title2马士兵" price="55">title2CS从入门到精通</titlechild>
<titlechild name="5" address="西安" author="title3马士兵" price="34">title3CS从入门到精通</titlechild>
</book>
<title name="6" address="深圳" author="深圳1" price="34">深圳</title>
</root>
测试代码是:
package org.dom4j.document_study_XPath;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Test_XPath {
public static void main(String[] args) {
readexml("C:\\2.xml");
}
//解析原始的xml
public static void readexml(String xmlpath){
SAXReader readxml = new SAXReader();
Document doc = null;
try {
doc = readxml.read(new File(xmlpath));//解析原始的xml
TestSelectNodes_06(doc);
TestSelectNodes_07(doc);
} catch (Exception e) {
e.printStackTrace();
}
}
//通过节点的XPath路径(通配符*)获取document某个名称,属性的节点 document 一个Dom4j的Document对象
@SuppressWarnings("unchecked")
public static void TestSelectNodes_06(Document document) {
System.out.println("获取名称为book节点下的所有子节点:");
List<Node> nodelist =document.selectNodes("//book/*");
for(Node node1_2 : nodelist){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文档的所有节点");
List<Node> nodelist1 =document.selectNodes("//*");
for(Node node1_2 : nodelist1){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取名称为pricechild的节点的所有属性");
List<Node> nodelist3 =document.selectNodes("//title[@*]");
for(Node node1_2 : nodelist3){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
}
//通过节点的XPath路径(运算符|)获取document某个名称,属性的节点 document 一个Dom4j的Document对象
@SuppressWarnings("unchecked")
public static void TestSelectNodes_07(Document document) {
System.out.println("选取xml文件中所有book下的节点titlechild1和节点的titlechild2");
List<Node> nodelist =document.selectNodes("//book/titlechild2|//book/titlechild1");
for(Node node1_2 : nodelist){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文件中所有的titlechild1和titlechild2节点");
List<Node> nodelist1 =document.selectNodes("//titlechild2|//titlechild1");
for(Node node1_2 : nodelist1){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
System.out.println("获取xml文件中所有titlechild1节点和root/book/title下的所有titlechild节点");
List<Node> nodelist3 =document.selectNodes("/root/book//titlechild|//titlechild1");
for(Node node1_2 : nodelist3){
System.out.println("node节点名称name=" +node1_2.getName() + "\t节点属性name=" + node1_2.valueOf("@name"));
}
}
}
相关文章推荐
- xPath对xml文档的处理入门6
- xPath对xml文档的处理入门1
- xPath对xml文档的处理入门5
- xPath对xml文档的处理入门2
- xPath对xml文档的处理入门3
- Stax处理XML(三)——XPath的使用和写文档、修改文档
- 使用XMLBeans处理XML数据和文档入门
- 使用XMLBeans处理XML数据和文档入门 作者:肖菁 (dev2dev ID: powerise) 湖南省长沙铁道学院科创计算机系统集成有限公司软件中心软件工程师
- xpath读取xml文档
- ajax--处理XML文档的DOM元素属性
- XPath提取xml文档数据
- PBDOM操作XML文档轻松入门
- xpath提取xml文档数据
- 对xml的处理_Dom4j入门_Dom4j与w3c之间的Document相互转换
- 在SSIS中使用XML任务处理XML数据或文档
- [转]使用.NET中的XML注释(二) -- 创建帮助文档入门篇
- DOM4J处理XML方法记录,附XPATH写法
- XPath是一种XML文档的寻址语言
- java中的xpath,读取xml文档。
- java中用dom解析xml的经典入门级文档