Xpath 匹配节点的内容为空(inner text 为空)
需求是从以下写出能从下面的xml中取出Title内容(inner text)为空的节点的XPath:
- <?xml version="1.0" encoding="utf-8" ?>
- <BookCatalog>
- <Books>
- <Book>
- <Title>Asp.net</Title>
- <Price>22.5</Price>
- <Author>Abraham</Author>
- </Book>
- <Book>
- <Title></Title>
- <Price>22.5</Price>
- <Author>Abraham</Author>
- </Book>
- </Books>
- </BookCatalog>
<?xml version="1.0" encoding="utf-8" ?> <BookCatalog> <Books> <Book> <Title>Asp.net</Title> <Price>22.5</Price> <Author>Abraham</Author> </Book> <Book> <Title></Title> <Price>22.5</Price> <Author>Abraham</Author> </Book> </Books> </BookCatalog>容易写出错误的xPath有:
- //Book[Title[text()='']]
- //Book[Title[text() is null]]
- //Book[Title[node() is null]]
- //Book[Title[. is null]]
- //Book[Title[text()=]]
//Book[Title[text()='']] //Book[Title[text() is null]] //Book[Title[node() is null]] //Book[Title[. is null]] //Book[Title[text()=]]正确的写法为:
- //Book[Title[not(text())]] 或
- //Book[Title[not(node())]]
//Book[Title[not(text())]] 或 //Book[Title[not(node())]]
验证程序为:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Xml;
- namespace TestXPath
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] errorXPaths = { "//Book[Title[text()='']]",
- "//Book[Title[text() is null]]",
- "//Book[Title[node() is null]]",
- "//Book[Title[. is null]]",
- "//Book[Title[text()=]]"};
- string[] correctXPaths = { "//Book[Title[not(text())]]", "//Book[Title[not(node())]]" };
- string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> " + @"
- <BookCatalog>
- <Books>
- <Book>
- <Title>Asp.net</Title>
- <Price>22.5</Price>
- <Author>Abraham</Author>
- </Book>
- <Book>
- <Title></Title>
- <Price>22.5</Price>
- <Author>Abraham</Author>
- </Book>
- </Books>
- </BookCatalog>";
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(xml);
- foreach (string errorxPath in errorXPaths)
- {
- try
- {
- XmlNodeList nodeList = xmlDocument.SelectNodes(errorxPath);
- Console.WriteLine("errorxPath:" + errorxPath);
- Console.WriteLine("nodeList.Count:" + nodeList.Count);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- }
- foreach (string correctXPath in correctXPaths)
- {
- XmlNodeList nodeList = xmlDocument.SelectNodes(correctXPath);
- Console.WriteLine("correctXPath:" + correctXPath);
- Console.WriteLine("nodeList.Count:" + nodeList.Count);
- }
- Console.Read();
- }
- }
- }
相关推荐
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询语言,用于选取XML文档中的节点,包括元素、属性、文本等。在本项目“Xpath生成器,自动生成XPATH,C#版”中,开发者...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。在IE浏览器下,为了方便开发者获取XML或HTML文档中的XPath路径,存在一种小工具,本文将...
本压缩包文件"xpath-helper.crx"很可能是一个Chrome浏览器的扩展程序,旨在提供实时的XPath查询支持。 XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、...
Xpath生成器,可以通过输入的文件,进行匹配,生成全部可用的Xpath,犹豫HTML中部分标签允许无结束,如:("LINK" ,"META","SCRIPT","IMG" ,"INPUT", "FORM")故已经被忽略,如有朋友发现其中有问题,请告诉我哦...
XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...
火狐老版本与XPath插件的组合在Python网络爬虫领域具有重要的应用价值。XPath是一种在XML文档中查找信息的语言,对于数据提取和解析尤其有效。在这个压缩包中,我们找到了火狐的老版本浏览器和一个专门针对XPath的...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来允许对XML文档中的元素、属性和其他节点进行快速定位。XPath使用路径表达式来选取XML文档中的节点,这些路径表达式类似于我们在文件...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,比如元素、属性和文本等。XPath 2.0是XPath的第二个主要版本,增加了更多的功能和优化。 在没有XPath Helper的...
XPathHelper_2.0.2.zip 是一个包含XPath Helper Chrome扩展程序的压缩文件,版本为2.0.2。XPath Helper是一款非常实用的工具,它专为Chrome浏览器设计,帮助开发者和网页爬虫工程师高效地测试和调试XPath表达式。...
XPath Helper是一款强大的Chrome浏览器插件,专为网页元素定位和数据提取而设计。它使得开发者和数据抓取者能够方便地生成和测试XPath表达式,从而高效地在HTML文档中定位所需信息。XPath(XML Path Language)是一...
XPath是XML处理中的一种强大的查询语言,用于在XML文档中查找特定的信息。它允许开发者根据节点的名称、属性、值甚至是它们之间的关系来定位XML数据。在这个“xpath 依赖包及开发手册”中,我们主要关注XPath的使用...
XPath Helper 2.0.2 是一款非常实用的网页插件,主要针对的是网页数据抓取和解析领域。XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取XML文档中的节点,包括元素、...
XPath是一种在XML文档中查找信息的语言,用于选取XML文档中的节点,包括元素、属性、文本等。XPath基于路径表达式来选取XML文档中的节点,这些路径表达式类似于文件系统的路径,但更为灵活。 1. **XPath的基本概念*...
XPath 使用路径表达式来选取节点,如元素、属性、文本等。本篇文章将详细探讨如何查看网页元素的 XPath,并介绍其相关知识点。 首先,XPath 的基本概念: 1. **节点**:在 XML 或 HTML 文档中,节点可以是元素(如...
Chrome_Xpath_v2.0.2.zip 是一个用于谷歌浏览器(Chrome)的扩展程序,它主要服务于网页数据抓取和数据分析。Xpath 是 XML Path Language 的缩写,是一种在XML文档中查找信息的语言,同时也被广泛应用于HTML页面的...
在Java开发中,DOM4J和XPath是两个重要的XML处理工具。XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置文件和文档结构化存储。DOM4J和XPath则提供了方便的方式来解析、操作和检索XML文档...
FF30 Firebug 2.0.2与XPath Checker 0.4.4是针对Firefox 30浏览器的两款重要扩展。Firebug是一款强大的Web开发工具,而XPath Checker则是一款用于验证XPath表达式的实用工具。这两款扩展在开发和调试网页时提供了...
XPath是一种强大的查询语言,用于在XML文档中定位元素、属性和其他节点。本文将深入探讨JDOM库中XPath的相关方法——`selectNodes()`和`selectSingleNode()`,以及它们的用法。 首先,我们来理解JDOM的基本概念。...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于Web抓取,特别是Python的Scrapy框架中,用于选取XML或HTML文档中的节点。本文将深入探讨如何使用XPath来获取子标签下的所有文本内容...
在Java编程环境中,XPath是一种强大的查询语言,用于在XML文档中查找信息。它允许我们根据节点的名称、属性、值或其他特性来定位XML文档中的特定部分。本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,...