`
suixinsuoyu12519
  • 浏览: 43867 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

XPATH

 
阅读更多

Xpath 匹配节点的内容为空(inner text 为空)

分类: XML .net 695人阅读 评论(0) 收藏 举报

需求是从以下写出能从下面的xml中取出Title内容(inner text)为空的节点的XPath: 

  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <BookCatalog>  
  3. <Books>  
  4. <Book>  
  5. <Title>Asp.net</Title>  
  6. <Price>22.5</Price>  
  7. <Author>Abraham</Author>  
  8. </Book>  
  9. <Book>  
  10. <Title></Title>  
  11. <Price>22.5</Price>  
  12. <Author>Abraham</Author>  
  13. </Book>  
  14. </Books>  
  15. </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有:
  1. //Book[Title[text()='']]   
  2.   
  3. //Book[Title[text() is null]]   
  4.   
  5. //Book[Title[node() is null]]   
  6.   
  7. //Book[Title[. is null]]   
  8.   
  9. //Book[Title[text()=]]   
//Book[Title[text()='']] 

//Book[Title[text() is null]] 

//Book[Title[node() is null]] 

//Book[Title[. is null]] 

//Book[Title[text()=]] 
正确的写法为:
  1. //Book[Title[not(text())]] 或    
  2.   
  3. //Book[Title[not(node())]]  
//Book[Title[not(text())]] 或  

//Book[Title[not(node())]]

验证程序为:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Xml;  
  6. namespace TestXPath  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             string[] errorXPaths = { "//Book[Title[text()='']]",   
  13.                 "//Book[Title[text() is null]]",   
  14.                 "//Book[Title[node() is null]]",   
  15.                 "//Book[Title[. is null]]",  
  16.                 "//Book[Title[text()=]]"};  
  17.             string[] correctXPaths = { "//Book[Title[not(text())]]""//Book[Title[not(node())]]" };  
  18.             string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> " + @"  
  19.                         <BookCatalog>  
  20.                         <Books>  
  21.                         <Book>  
  22.                         <Title>Asp.net</Title>  
  23.                         <Price>22.5</Price>  
  24.                         <Author>Abraham</Author>  
  25.                         </Book>  
  26.                         <Book>  
  27.                         <Title></Title>  
  28.                         <Price>22.5</Price>  
  29.                         <Author>Abraham</Author>  
  30.                         </Book>  
  31.                         </Books>  
  32.                         </BookCatalog>";  
  33.             XmlDocument xmlDocument = new XmlDocument();  
  34.             xmlDocument.LoadXml(xml);  
  35.             foreach (string errorxPath in errorXPaths)  
  36.             {  
  37.                 try  
  38.                 {  
  39.                     XmlNodeList nodeList = xmlDocument.SelectNodes(errorxPath);  
  40.                     Console.WriteLine("errorxPath:" + errorxPath);  
  41.                     Console.WriteLine("nodeList.Count:" + nodeList.Count);  
  42.                 }  
  43.                 catch (Exception ex)  
  44.                 {  
  45.                     Console.WriteLine(ex.Message);  
  46.                 }   
  47.             }  
  48.   
  49.             foreach (string correctXPath in correctXPaths)  
  50.             {  
  51.                 XmlNodeList nodeList = xmlDocument.SelectNodes(correctXPath);  
  52.                 Console.WriteLine("correctXPath:" + correctXPath);  
  53.                 Console.WriteLine("nodeList.Count:" + nodeList.Count);  
  54.             }  
  55.   
  56.             Console.Read();  
  57.         }  
  58.     }  
  59. }  
分享到:
评论

相关推荐

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

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询语言,用于选取XML文档中的节点,包括元素、属性、文本等。在本项目“Xpath生成器,自动生成XPATH,C#版”中,开发者...

    IE下获取XPATH小工具源码_xpath_

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。在IE浏览器下,为了方便开发者获取XML或HTML文档中的XPath路径,存在一种小工具,本文将...

    xpath-helper.zip

    本压缩包文件"xpath-helper.crx"很可能是一个Chrome浏览器的扩展程序,旨在提供实时的XPath查询支持。 XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、...

    Xpath生成器,自动生成可用的Xpath。

    Xpath生成器,可以通过输入的文件,进行匹配,生成全部可用的Xpath,犹豫HTML中部分标签允许无结束,如:("LINK" ,"META","SCRIPT","IMG" ,"INPUT", "FORM")故已经被忽略,如有朋友发现其中有问题,请告诉我哦...

    XPath Helper版本2.0.2

    XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...

    火狐老版本+xpath插件(适合python+xpath爬虫使用)

    火狐老版本与XPath插件的组合在Python网络爬虫领域具有重要的应用价值。XPath是一种在XML文档中查找信息的语言,对于数据提取和解析尤其有效。在这个压缩包中,我们找到了火狐的老版本浏览器和一个专门针对XPath的...

    xpath的jar包

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来允许对XML文档中的元素、属性和其他节点进行快速定位。XPath使用路径表达式来选取XML文档中的节点,这些路径表达式类似于我们在文件...

    谷歌浏览器XPath2.0插件

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,比如元素、属性和文本等。XPath 2.0是XPath的第二个主要版本,增加了更多的功能和优化。 在没有XPath Helper的...

    XPathHelper_2.0.2.zip

    XPathHelper_2.0.2.zip 是一个包含XPath Helper Chrome扩展程序的压缩文件,版本为2.0.2。XPath Helper是一款非常实用的工具,它专为Chrome浏览器设计,帮助开发者和网页爬虫工程师高效地测试和调试XPath表达式。...

    xpath-helper 插件及使用方法

    XPath Helper是一款强大的Chrome浏览器插件,专为网页元素定位和数据提取而设计。它使得开发者和数据抓取者能够方便地生成和测试XPath表达式,从而高效地在HTML文档中定位所需信息。XPath(XML Path Language)是一...

    xpath 依赖包及开发手册

    XPath是XML处理中的一种强大的查询语言,用于在XML文档中查找特定的信息。它允许开发者根据节点的名称、属性、值甚至是它们之间的关系来定位XML数据。在这个“xpath 依赖包及开发手册”中,我们主要关注XPath的使用...

    XPath Helper 2.0.2网页插件

    XPath Helper 2.0.2 是一款非常实用的网页插件,主要针对的是网页数据抓取和解析领域。XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取XML文档中的节点,包括元素、...

    XPath教程(描述XPath的用法)

    XPath是一种在XML文档中查找信息的语言,用于选取XML文档中的节点,包括元素、属性、文本等。XPath基于路径表达式来选取XML文档中的节点,这些路径表达式类似于文件系统的路径,但更为灵活。 1. **XPath的基本概念*...

    查看网页元素的xpath

    XPath 使用路径表达式来选取节点,如元素、属性、文本等。本篇文章将详细探讨如何查看网页元素的 XPath,并介绍其相关知识点。 首先,XPath 的基本概念: 1. **节点**:在 XML 或 HTML 文档中,节点可以是元素(如...

    chrome_Xpath_v2.0.2.zip

    Chrome_Xpath_v2.0.2.zip 是一个用于谷歌浏览器(Chrome)的扩展程序,它主要服务于网页数据抓取和数据分析。Xpath 是 XML Path Language 的缩写,是一种在XML文档中查找信息的语言,同时也被广泛应用于HTML页面的...

    dom4j和xpath必备jar包

    在Java开发中,DOM4J和XPath是两个重要的XML处理工具。XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置文件和文档结构化存储。DOM4J和XPath则提供了方便的方式来解析、操作和检索XML文档...

    ff30 firebug2.0.2 xpath checker0.4.4

    FF30 Firebug 2.0.2与XPath Checker 0.4.4是针对Firefox 30浏览器的两款重要扩展。Firebug是一款强大的Web开发工具,而XPath Checker则是一款用于验证XPath表达式的实用工具。这两款扩展在开发和调试网页时提供了...

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    XPath是一种强大的查询语言,用于在XML文档中定位元素、属性和其他节点。本文将深入探讨JDOM库中XPath的相关方法——`selectNodes()`和`selectSingleNode()`,以及它们的用法。 首先,我们来理解JDOM的基本概念。...

    对Xpath 获取子标签下所有文本的方法详解

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于Web抓取,特别是Python的Scrapy框架中,用于选取XML或HTML文档中的节点。本文将深入探讨如何使用XPath来获取子标签下的所有文本内容...

    Java中使用xpath获取xml中的数据

    在Java编程环境中,XPath是一种强大的查询语言,用于在XML文档中查找信息。它允许我们根据节点的名称、属性、值或其他特性来定位XML文档中的特定部分。本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,...

Global site tag (gtag.js) - Google Analytics