当前位置:首页 / 网页制作 / 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(#换@),我们将尽快处理。

您可能在找这些

  • 内容标签:

热门素材

固定在页面左侧的导航菜单

2013-01-06   浏览:9529

WIN 8效果左右全屏滚动幻灯片

2017-02-28   浏览:116

css3模拟雷达波向外散发动画效果

2017-03-09   浏览:465

jQuery点击弹出确认或取消删除特效

2017-03-13   浏览:426

Ajax选项卡、隔行换色、弹出遮罩层

2013-01-09   浏览:8397

腾讯科技热点推荐图片展示效果

2017-03-12   浏览:473

HTML5 Canvas点击页面烟花绽放特效

2017-03-22   浏览:297

多彩背景色左右滑动导航

2017-02-26   浏览:220

用层模拟可移动/可隐藏的小窗口

2013-01-09   浏览:8284

一款简洁的TAB滑动门修改

2013-01-16   浏览:8426

jQuery+CSS实现图片感应鼠标高亮显示当

2013-01-18   浏览:8666

jQuery视差插件ImageScroll

2017-03-17   浏览:184