1、xml的内容为
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright w3school.com.cn -->
<!-- W3School.com.cn bookstore example -->
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
</bookstore>
2、下载dom4j的jar包
dom4j.jar 和jaxen.jar
下面是java的代码
package com.java.test;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jTest {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//1、回去到document对象、方法有三
//1.1
SAXReader reader=new SAXReader();
Document document=reader.read(new File("books.xml"));
//1.2
// Document document=DocumentHelper.parseText(text);
//1.3
// DocumentHelper.createDocument();
//2、回去跟节点
Element rootElement = document.getRootElement();
//回去根节点的书信
// rootElement.attributes();
// rootElement.attribute(qname);
//3、根节点下所有的子节点
// List<Element> elements = rootElement.elements();
List elements = rootElement.elements();
// Iterator elementIterator = rootElement.elementIterator();
//4、获取节点的内容
// rootElement.getText();
//解析整个xml的代码为:
Iterator elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
System.out.println("--------------------------");
Element element=(Element) elementIterator.next();
List attrs = element.attributes();
for (int i = 0; i < attrs.size(); i++) {
String name = ((Attribute)attrs.get(i)).getName();
String value = ((Attribute)attrs.get(i)).getValue();
System.out.println(name+"="+value);
}
List list = element.elements();
for (int i = 0; i < list.size(); i++) {
String text = ((Element)list.get(i)).getText();
System.out.println(text);
}
System.out.println("--------------------------");
}
String text = rootElement.selectSingleNode("//price").getText();
System.out.println("price="+text);
List selectNodes = rootElement.selectNodes("//price");
for (int i = 0; i <selectNodes.size(); i++) {
String priceString = ((Node)selectNodes.get(i)).getText();
System.out.println(priceString);
}
}
}
结果输出如下:
--------------------------
category=children
Harry Potter
J K. Rowling
2005
29.99
--------------------------
--------------------------
category=cooking
Everyday Italian
Giada De Laurentiis
2005
30.00
--------------------------
--------------------------
category=web
cover=paperback
Learning XML
Erik T. Ray
2003
39.95
--------------------------
--------------------------
category=web
XQuery Kick Start
James McGovern
Per Bothner
Kurt Cagle
James Linn
Vaidyanathan Nagarajan
2003
49.99
--------------------------
price=29.99
29.99
30.00
39.95
49.99