import java.io.File;
import java.io.FileInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class FindElementsByAbsoluteLocationWithXPath {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream(new File("in.xml")));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
String expression;
Node node;
NodeList nodeList;
// 1. root element
expression = "/*";
node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);
System.out.println("1. " + node.getNodeName());
// 2. root element (by name)
expression = "/rss";
node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);
System.out.println("2. " + node.getNodeName());
// 3. element under rss
expression = "/rss/channel";
node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);
System.out.println("3. " + node.getNodeName());
// 4. all elements under rss/channel
expression = "/rss/channel/*";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
System.out.print("4. ");
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.print(nodeList.item(i).getNodeName() + " ");
}
System.out.println();
// 5. all title elements in the document
expression = "//title";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
System.out.print("5. ");
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.print(nodeList.item(i).getNodeName() + " ");
}
System.out.println();
// 6. all elements in the document except title
expression = "//*[name() != 'title']";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
System.out.print("6. ");
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.print(nodeList.item(i).getNodeName() + " ");
}
System.out.println();
// 7. all elements with at least one child element
expression = "//*[*]";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
System.out.print("7. ");
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.print(nodeList.item(i).getNodeName() + " ");
}
System.out.println();
// 8. all level-5 elements (the root being at level 1)
expression = "/*/*/*/*";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
System.out.print("8. ");
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.print(nodeList.item(i).getNodeName() + " ");
}
System.out.println();
}
}
Input:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Java Tutorials and Examples 2</title>
<language>en-us</language>
<item>
<title><![CDATA[Java Tutorials 2]]></title>
<link>http://www.javacodegeeks.com/</link>
</item>
<item>
<title><![CDATA[Java Examples 2]]></title>
<link>http://examples.javacodegeeks.com/</link>
</item>
</channel>
</rss>登录后复制输出:
1. rss
2. rss
3. channel
4. title language item item
5. title title title
6. rss channel language item link item link
7. rss channel item item
8. title link title link
登录后复制以上就是java通过XPath解析xml节点的代码详解的详细内容,更多请关注靠谱客其它相关文章!

最后
以上就是坚强棒棒糖最近收集整理的关于java通过XPath解析xml节点的代码详解的全部内容,更多相关java通过XPath解析xml节点内容请搜索靠谱客的其他文章。
发表评论 取消回复