• 解析xpath获取到的标签


    一、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()", document, 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", document, XPathConstants.STRING);
                System.out.println(str3);
                /**
                 *获取 bookstore 节点下所有 book 的节点集合
                 */
                NodeList nodeBookList=(NodeList) xPath.evaluate("/bookstore/book", document, 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", element, XPathConstants.STRING);
                    String yearValue=(String) xPath.evaluate("year", element, XPathConstants.STRING);
                    String priceValue=(String) xPath.evaluate("price", element, XPathConstants.STRING);
                    System.out.println(titleValue+" "+authorValue+" "+yearValue+" "+priceValue);
                    System.out.println("=========================================");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    结果截图:

     

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    【ES6】函数的扩展
    NSFileManger使用介绍
    委托,曾将让我头疼难以理解
    【HDOJ】1914 The Stable Marriage Problem
    MySQL修改配置优化插入性能
    MySQL配置文件的编码问题
    MyBatis批量更新时提示"You have an error in your SQL syntax"
    MyBatis批量更新返回受影响数
    log4j.properties配置说明
    删除Win10的OneDrive
  • 原文地址:https://www.cnblogs.com/aeon/p/10770718.html
Copyright © 2020-2023  润新知