Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XPath获取值为XML节点的记录_Xml_Xpath_Xquery - Fatal编程技术网

使用XPath获取值为XML节点的记录

使用XPath获取值为XML节点的记录,xml,xpath,xquery,Xml,Xpath,Xquery,使用XPath并提供以下XML,我可以找到= strXpath = "//pub-code/ad-type[class-code='XX Cls Employment']" (works) Set nlAds = xmlDoc.documentElement.selectNodes(strXPath) strXpath = "//pub-code[ad-type='XX Cls Display']" (doesn't work)? Set nlAds = xmlDoc.documentElem

使用XPath并提供以下XML,我可以找到=

strXpath = "//pub-code/ad-type[class-code='XX Cls Employment']" (works)
Set nlAds = xmlDoc.documentElement.selectNodes(strXPath)
strXpath = "//pub-code[ad-type='XX Cls Display']" (doesn't work)?
Set nlAds = xmlDoc.documentElement.selectNodes(strXPath)
我怎样才能得到所有这些记录=

strXpath = "//pub-code/ad-type[class-code='XX Cls Employment']" (works)
Set nlAds = xmlDoc.documentElement.selectNodes(strXPath)
strXpath = "//pub-code[ad-type='XX Cls Display']" (doesn't work)?
Set nlAds = xmlDoc.documentElement.selectNodes(strXPath)
第二个XPath仅在标记位于同一行时有效

我显然错过了什么。我花了几个小时尝试了许多不同的建议,但似乎都不管用

<web-export>
<run-date>11/08/2015
<pub-code>XX Domain.com
<ad-type>XX Cls Display
<cat-code>Employment</cat-code>
<class-code>XX Cls Employment</class-code>
<ad-number>00000123456</ad-number>
</ad-type>
</pub-code>
</run-date>
</web-export>

11/08/2015
XX域名.com
XX Cls显示器
就业
XX Cls就业
00000123456
试试这个

//pub-code[normalize-space(ad-type/text())='XX Cls Display']

问题可能是文本节点跨越到下一行,因此它不等于您正在搜索的字符串

删减之前的文本

//pub-code[normalize-space(ad-type/text()) = 'XX Cls Display']
或测试字符串是否包含:

//pub-code[contains(ad-type/text(), 'XX Cls Display')]

您可以使用
//发布代码[广告类型[以(,'XX Cls Display')开头]]
//发布代码[广告类型[包含(,'XX Cls Display')]]
。请参阅。

谢谢,我已经尝试过了,但它仍然没有选择任何内容。这是因为不同的实现处理空白的方式不同。您应该始终发布您的软件堆栈。我正在编写VBscript。谢谢你的帮助,谢谢。这些是我在搜索时找到的答案,但在我的示例中,我无法让它们起作用。请提供您查询文档的确切方式,包括输入和代码。谢谢,它仍然返回0个节点。我正在Windows 2008服务器上的VBScript中使用“Microsoft.XMLDOM”。只要开始标记和结束标记在同一行上,它就可以正常工作。如果标记被新行字符分割,则该操作无效。我已经试了好几个小时了。