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

时间:2015-11-08 15:10:15

标签: 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.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>

3 个答案:

答案 0 :(得分:2)

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

之前修剪文本
//pub-code[normalize-space(ad-type/text()) = 'XX Cls Display']

或测试字符串是否包含在内:

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

答案 1 :(得分:0)

试试这个?

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

答案 2 :(得分:0)

您可以使用//pub-code[ad-type[starts-with(., 'XX Cls Display')]]//pub-code[ad-type[contains(., 'XX Cls Display')]]。请参阅http://xsltransform.net/jyRYYia