我有以下XML
<xml>
<series>
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<year>2003</year>
<a>
<b>
<c><![CDATA[ Foo ]]></c>
</b>
</a>
</series>
<series>
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<year>2003</year>
<a>
<b>
<c><![CDATA[ Bar ]]></c>
</b>
</a>
</series>
</xml>我正在尝试获取series,它的c值为foo。如果c没有封装在CDATA中,我可以使用下面的xpath /xml/series/a/b[c="Foo"]/../..找到它,但由于CDATA的原因,它不能工作--如何找到具有c值为foo的series
谢谢。
发布于 2012-08-16 19:45:10
CDATA部分不会出现在XPath操作的数据模型中。你是对的,你的XPath没有找到你想要的节点,但不是CDATA部分让事情出错。谓词[c="Foo"]正在寻找一个字符串值为"Foo“的c元素,但这里没有这样的节点:您的c元素的字符串值为"Foo”和"Bar“(即"Foo”和"Bar“前面各有一个空格)。
试试/xml/series/a/b[contains(c,"Foo")]/../..或/xml/series/a/b[normalize-space(c) = "Foo"]/../..,我想你会得到你所期望的。
https://stackoverflow.com/questions/11993617
复制相似问题