`

XPath测试事例

 
阅读更多
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

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 java.io.*;

/**
 * User: herry
 * Date: 15-5-20 20:44
 */
public class TestXPath {
    public static void main(String[] args) throws Exception {
        String testXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<rss version=\"2.0\">\n" +
                "    <channel>\n" +
                "        <title>Java Tutorials and Examples 2</title>\n" +
                "        <language>en-us</language>\n" +
                "        <item>\n" +
                "            <title><![CDATA[Java Tutorials 2]]></title>\n" +
                "            <link>http://www.javacodegeeks.com/</link>\n" +
                "        </item>\n" +
                "        <item>\n" +
                "            <title><![CDATA[Java Examples 2]]></title>\n" +
                "            <link>http://examples.javacodegeeks.com/</link>\n" +
                "        </item>\n" +
                "    </channel>\n" +
                "</rss>";
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setValidating(false);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new ByteArrayInputStream(testXML.getBytes("UTF-8")));

        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();


         // 4.1 all elements under rss/channel/title
        expression = "/rss/channel/item";
        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
        System.out.print("4.1 ");
        for (int i = 0; i < nodeList.getLength(); i++) {
            Node node1 = nodeList.item(i);
            System.out.print(node1.getNodeName() + " ");
            /**
             *  //para selects all the para descendants ofthe document root and thus selects all para elements in thesame document as the context node
             * .//para selects the para elementdescendants of the context node
             */
            System.out.println("===="+((Element)xpath.evaluate("./title", node1, XPathConstants.NODE)).getTextContent());
        }
        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();

    }
}

 

分享到:
评论

相关推荐

    XPath 测试工具 快速XPath测试

    XPath测试工具是开发者用来验证和调试XPath表达式的重要辅助手段,它能够快速地检验XPath查询是否正确地定位到了预期的XML节点。 本工具是一款自主研发的XPath测试应用,它简化了XPath查询的测试过程,允许用户直接...

    Xpath测试工具 好东西啊,懂的下

    Xpath测试工具 Xpath测试工具 Xpath测试工具Xpath测试工具Xpath测试工具Xpath测试工具

    xpath表达式测试小工具

    这款“XPath表达式测试小工具”显然是为了帮助开发者和XML爱好者更方便地测试和验证XPath表达式的正确性。 在XML文档中,XPath表达式可以用来选取节点集、单个节点、文本值或者布尔值。其基本语法包括路径表达式、...

    XPath测试.zip

    XPath测试.zip这个压缩包包含了一个XPath相关的测试工具,这通常是开发者用来验证和调试XPath表达式的实用工具。 HtmlAgilityPack.dll是一个.NET Framework库,专门用于解析HTML文档。它允许开发人员以DOM...

    xpath 测试工具2.0

    总的来说,XPath 2.0是XML处理中的强大语言,而“XPath测试工具2.0”则为开发者提供了便捷的测试和调试环境,以优化XPath查询并提升XML数据的处理效率。学习和熟练掌握XPath 2.0及其相关的测试工具,对于任何需要...

    Xpath测试工具

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是XPath测试工具的核心技术。XPath被设计用来在XML文档中导航,找到特定的元素、属性或其他节点。它为开发者提供了强大的查询能力,允许他们快速定位...

    表达式验证1.0[正则,xpath测试]

    《表达式验证1.0:正则与XPath测试利器》 在信息技术领域,正则表达式(Regular Expression)和XPath(XML Path Language)是两种强大的文本处理和数据提取工具。本文将详细介绍基于.NET Framework 3.5的"表达式...

    58同城搜索页静态html代码爬虫xpath测试demo

    开发者会编写测试用例,使用XPath选择不同的元素,检查爬虫是否能够正确抓取和解析数据。 为了实现这个爬虫,开发者可能使用Python的Scrapy框架,结合BeautifulSoup和lxml库来解析HTML并利用XPath。Scrapy提供了...

    XPath测试程序

    XPath测试程序是针对HTML文档解析和检索的一种工具,它利用XPath语言来选取XML或HTML文档中的节点。在本例中,我们重点讨论如何使用HtmlAgilityPack库在.NET环境中进行XPath操作。 HtmlAgilityPack(HAP)是一个...

    xpath测试工具,简化采集工作

    仅需要输入目标网址+xpath规则即可进行测试xpath是否有效。 SHA256: bbaf93f27776e6b9c1cb614ea147bc29f91d7cb6d8bd1432f94bf4a246c24162 查毒地址: ...

    IE浏览器Xpath工具.zip

    "IE浏览器Xpath工具.zip" 提供了一个在IE环境下获取元素XPath的解决方案,确保与Chrome浏览器生成的XPath一致,这对于跨浏览器测试非常有用。 首先,我们需要理解XPath的基本概念。XPath使用路径表达式来选取XML...

    测试XPath注入.docx

    测试XPath注入 XPath 注入是指攻击者通过提交恶意的 XPath 查询来破坏应用程序的逻辑或获取未授权访问的数据的安全漏洞。XPath 是一种用于导航 XML 文档并从中获取数据的解释型语言。许多时候,一个 XPath 表达式...

    C# 写的测试XPath 的小工具

    结合题目中的“C#写的测试XPath的小工具”,我们可以探讨如何在C#中使用XPath,以及创建这样的测试工具的基本步骤。 首先,要使用XPath在C#中处理XML文档,你需要引入System.Xml命名空间,其中包含XPathNavigator和...

    Xpath生成器,自动生成XPATH,C#版

    项目中的`remi.txt`可能包含了生成器的使用说明、开发者注释或源代码的一部分,而`XpathTest`可能是一个测试用例或测试脚本,用于检验XPath生成器的功能和性能。 XPath在开发中有着广泛的应用,例如网页抓取、XML...

    Xpath 工具

    例如,在自动化测试中,测试脚本可能会利用XPath定位网页元素,确保正确地交互。其次,XPath工具是XML数据处理和分析的得力助手,特别是在需要从大型XML文件中提取特定信息时。此外,它们在XML Schema验证、XSLT转换...

    谷歌浏览器XPath2.0插件

    在没有XPath Helper的情况下,开发者或爬虫工程师通常需要手动在浏览器的开发者工具中寻找和测试XPath表达式,这是一个既耗时又容易出错的过程。而XPath Helper插件则可以直接在浏览器界面中提供即时反馈,帮助用户...

    XPath教程

    XPath的基本概念包括节点、轴、节点测试和谓语。节点是XML文档的构成元素,如元素节点、属性节点、文本节点等。轴定义了从当前节点到其他节点的关系,如子节点轴(child::)、父节点轴(parent::)、祖先节点轴...

    IE下获取XPATH小工具源码_xpath_

    6. **源码分析**:在实际学习这个小工具的源码时,你可以关注以下几个关键点:DOM的加载和解析逻辑、用户交互事件处理、XPath路径生成的算法、以及任何用于调试或测试的辅助功能。 通过深入研究和理解这个C#小工具...

    XPathHelper_2.0.2.zip

    XPath Helper是一款非常实用的工具,它专为Chrome浏览器设计,帮助开发者和网页爬虫工程师高效地测试和调试XPath表达式。XPath(XML Path Language)是一种在XML文档中查找信息的语言,它能够定位XML或HTML文档中的...

    XPathHelper_2.0.2_xpath_

    XPathHelper 2.0.2 版本专注于XPath的查询与应用,特别适合于Web自动化测试和网页数据抓取。 XPath在Web开发中的主要用途有以下几点: 1. **元素定位**:XPath允许开发者通过路径表达式来选取XML或HTML文档中的...

Global site tag (gtag.js) - Google Analytics