当前位置:首页 / 网页制作 / 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房地产贷款计算器网页下载

2017-03-13   浏览:454

JS仿苹果放大效果的任务栏菜单

2013-01-19   浏览:8437

jQuery图片弹出翻转特效网页下载

2017-03-15   浏览:344

jq闪烁摇奖特效

2017-03-18   浏览:118

jQuery+css打造的带箭头指示的导航菜单

2013-01-17   浏览:8297

用按钮关闭当前打开的页面

2013-01-10   浏览:8050

jQuery UI自定义样式日历网页下载

2017-03-14   浏览:236

CSS3+jQuery制作简单的月历

2017-09-26   浏览:541

jQuery鼠标滚动垂直全屏切换网页下载

2017-03-13   浏览:267

CSS+JS点击展开/隐藏的折叠菜单

2013-01-17   浏览:9014

jQuery响应式消息通知插件

2017-03-13   浏览:234

纯CSS实现鼠标滑过变色的竖向导航菜单

2013-01-10   浏览:8314