0

我有以下 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>

我正在尝试获取值为fooseries的值。如果没有包含在 CDATA 中,我可以使用以下 xpath 找到它,但由于 CDATA 不起作用 - 我如何找到值为foocc/xml/series/a/b[c="Foo"]/../..seriesc

谢谢。

4

1 回答 1

2

CDATA 部分不会出现在由 XPath 操作的数据模型中。你是对的,你的 XPath 没有找到你想要的节点,但不是 CDATA 部分让事情出错。谓词[c="Foo"]正在寻找c字符串值为“ Foo”的元素,但此处没有这样的节点:您的c元素的字符串值为“ Foo”和“ Bar”(即,“Foo”和“Bar”的前后各有一个空格处)。

尝试/xml/series/a/b[contains(c,"Foo")]/../../xml/series/a/b[normalize-space(c) = "Foo"]/../..,我认为你会得到你所期望的。

于 2012-08-16T19:45:10.263 回答