当前位置:首页 / 网页制作 / XML和XSLT教程 / java通过XPath解析xml节点的代码介绍
java通过XPath解析xml节点的代码介绍
芯晴素材特效 分类:XML和XSLT教程 发布日期:2018-04-16
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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><a rel="nofollow" href="http://www.javacodegeeks.com/<" target="_blank">http://www.javacodegeeks.com/<</a>;/link>
        </item>
        <item>
            <title><![CDATA[Java Examples 2]]></title>
            <link><a rel="nofollow" href="http://examples.javacodegeeks.com/<" target="_blank">http://examples.javacodegeeks.com/<</a>;/link>
        </item>
    </channel>
</rss>

输出:

1
2
3
4
5
6
7
8
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

版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系821794221#qq.com(#换@),我们将尽快处理。

您可能在找这些

  • 内容标签:

热门素材

jQuery+CSS3实现黑色圆形时钟网页下载

2017-03-13   浏览:444

jQuery手机端上拉下拉刷新页面网页下载

2017-03-14   浏览:274

JS实现文字从页面顶部掉下来的效果

2013-01-11   浏览:8445

jQuery简易日历插件下载

2017-03-13   浏览:505

一款红色风格JS+CSS竖向tab选项卡

2013-01-14   浏览:9290

仿win7界面弹出窗口放大缩小网页下载

2017-03-14   浏览:116

jQuery实现图片滑动导航

2017-03-16   浏览:439

jQuery金币抽奖效果网页下载下载

2017-03-14   浏览:184

jQ OSX底部工具箱

2017-03-18   浏览:343

支持背景图片的圆角效果的矩形

2013-01-09   浏览:8002

jQuery房地产贷款计算器网页下载

2017-03-13   浏览:453

jQuery心型图片墙鼠标悬浮变大

2017-03-17   浏览:497