我有以下XML Schema
<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
值 foo 的c
。如果c
未包含在CDATA中,我可以使用以下xpath /xml/series/a/b[c="Foo"]/../..
找到它但由于CDATA而无效 - 我怎样才能找到series
c
1}} foo 的价值?
感谢。
答案 0 :(得分:2)
CDATA部分未出现在XPath操作的数据模型中。你是对的,你的XPath没有找到你想要的节点,但不是CDATA部分会让事情出错。谓词[c="Foo"]
正在查找字符串值为“c
”的Foo
元素,但此处没有此类节点:您的c
元素的字符串值为“{ {1}}“和”Foo
“(即”Foo“和”Bar“每个前后都有一个空格。)
尝试Bar
或/xml/series/a/b[contains(c,"Foo")]/../..
,我认为您会得到您期望的结果。