加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解析xpath获取到的标签

发布时间:2020-12-16 23:24:47 所属栏目:百科 来源:网络整理
导读:一、book.xml ? xml version="1.0" encoding="UTF-8" ? bookstore book category ="children" title lang ="en" Harry Potter / title author J K. Rowling / author year 2005 / year price 29.99 / price / book book category ="cooking" title lang ="en

一、book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="children">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="cooking">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="web">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
    <book category="web">
        <title lang="uk">XQuery Kick Start</title>
        <author>James McGovern</author>
        <year>2003</year>
        <price>49.99</price>
    </book>
</bookstore>
package edu.aeon.xml;

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.Element;
import org.w3c.dom.NodeList;
/**
 * [说明]:xpath获取节点
 * @author aeon(qq:1584875179)
 *
 */
public class XpathParser {

    public static void main(String[] args) {
        try {
            DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
            Document document=documentBuilder.parse("config/book.xml");
            XPath xPath= XPathFactory.newInstance().newXPath();
            /**
             * 获取 bookstore 节点下 book 属性 category 值为 web 下的第二个 title 节点的文本内容
             * xpath路径为:/bookstore/book[@category=‘web‘][2]/title/text()
             */
            String str1=(String) xPath.evaluate("/bookstore/book[@category=‘web‘][2]/title/text()",document,XPathConstants.STRING);
            System.out.println(str1);
            /**
             * 获取 bookstore 节点下 book 属性 category 值为 web 的 title 属性lang为en 的节点内容
             * xpath路径为:/bookstore/book[@category=‘web‘]/title[@lang=‘en‘]/text()
             */
            String str2=(String) xPath.evaluate("/bookstore/book[@category=‘web‘]/title[@lang=‘en‘]/text()",XPathConstants.STRING);
            System.out.println(str2);
            /**
             * 获取bookstore下book属性category值为cooking的title的lang属性的值
             * xpath路径为:/bookstore/book[@category=‘cooking‘]/title/@lang
             */
            String str3=(String) xPath.evaluate("/bookstore/book[@category=‘cooking‘]/title/@lang",XPathConstants.STRING);
            System.out.println(str3);
            /**
             *获取 bookstore 节点下所有 book 的节点集合
             */
            NodeList nodeBookList=(NodeList) xPath.evaluate("/bookstore/book",XPathConstants.NODESET);
            for(int i=0;i<nodeBookList.getLength();i++){
                Element element=(Element) nodeBookList.item(i);
                String titleValue=(String) xPath.evaluate("title",element,XPathConstants.STRING);
                String authorValue=(String) xPath.evaluate("author",XPathConstants.STRING);
                String yearValue=(String) xPath.evaluate("year",XPathConstants.STRING);
                String priceValue=(String) xPath.evaluate("price",XPathConstants.STRING);
                System.out.println(titleValue+" "+authorValue+" "+yearValue+" "+priceValue);
                System.out.println("=========================================");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

结果截图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读