<?xml version="1.0" encoding="GBK"?>
<test a="a" b="b" >
<temp a="4"
b="18"
c="0"
d="j2ee"
e =""
f =""
g =""
h="java"
i="java解析xml"
j=""
k="java解析xml"
l= ""
m="">
<file id= "7" n= "" x="0" y="4" z="0"></file>
</temp>
<temp a="12"
b="43"
c="1"
d="C#"
e =""
f =""
g =""
h=".net"
i="java解析xml"
j=""
k="java解析xml"
l= ""
m="">
<file id= "54" n= "" x="0" y="48" z="12"></file>
</temp>
</test> 我想获取父节点test中 a的属性值,b的属性值.
子节点temp中a的属性值,b的属性值,file节点中的 id值,z的值.
请问该如何实现.谢谢
<test a="a" b="b" >
<temp a="4"
b="18"
c="0"
d="j2ee"
e =""
f =""
g =""
h="java"
i="java解析xml"
j=""
k="java解析xml"
l= ""
m="">
<file id= "7" n= "" x="0" y="4" z="0"></file>
</temp>
<temp a="12"
b="43"
c="1"
d="C#"
e =""
f =""
g =""
h=".net"
i="java解析xml"
j=""
k="java解析xml"
l= ""
m="">
<file id= "54" n= "" x="0" y="48" z="12"></file>
</temp>
</test> 我想获取父节点test中 a的属性值,b的属性值.
子节点temp中a的属性值,b的属性值,file节点中的 id值,z的值.
请问该如何实现.谢谢
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;public class a {
public static void main(String[] args) {
try {
XPathFactory fac = XPathFactory.newInstance();
XPath pat = fac.newXPath(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("c:/a.xml")); NodeList list = (NodeList) pat.evaluate("/test/@a|/test/@b", doc,
XPathConstants.NODESET);
print(list, "test"); list = (NodeList) pat.evaluate("//temp/@a|//temp/@b", doc,
XPathConstants.NODESET);
print(list, "temp"); list = (NodeList) pat.evaluate("//file/@id|//file/@z", doc,
XPathConstants.NODESET);
print(list, "file"); } catch (Exception ex) {
ex.printStackTrace();
}
} public static void print(NodeList list, String ele) {
System.out.println(ele + ":");
for (int i = 0; i < list.getLength(); i++) { System.out.println("\t" + list.item(i).getNodeName() + ":" +
list.item(i).getNodeValue());
} }
}
XPATH很强大,不过比jdom要多学习一点东西拉