Xpath CDATA等于

时间:2012-08-16 18:53:35

标签: xml xpath

我有以下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 的价值?

感谢。

1 个答案:

答案 0 :(得分:2)

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

尝试Bar/xml/series/a/b[contains(c,"Foo")]/../..,我认为您会得到您期望的结果。