java通过XPath解析xml节点的代码详解

互联网 17-4-27
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节点的代码详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Android 淡入淡出动画xml配置代码展示

相关资讯