【问题标题】:Xpath to the tag inside CDATACDATA 内标签的 Xpath
【发布时间】:2011-08-09 04:51:28
【问题描述】:

我想找到位于 CDATA 中的标记的 xpath。在 xml 片段下方。

<books>
 <book>
  <title></title>
  <content><![CDATA[<p>Hi hello Hw r u?</p><p>We are fine</p><p>Hi babeeee!!!!</p>]]>    </content>
 </book>
</books>

我想获取&lt;content&gt; 内第一个&lt;p&gt; 标记内的数据。 谁能给它正确的xpath?

【问题讨论】:

标签: xml xpath


【解决方案1】:

CDATA 包含任意字符数据。与 PCDATA(parsed 字符数据的首字母缩写)相反,它没有被解析,因此其中没有指向“元素”的 xpath。

【讨论】:

    【解决方案2】:

    正如 Leif 所说,CDATA 部分中的内容没有被解析,所以它只是文本,即使它看起来像标记。你必须解析它。您可以使用 Saxon(9.1 或更高版本的商业版)和 saxon:parse 来完成。然后您会发现它的格式不正确,因此您可能不得不求助于 TagSoup 之类的解析器来解析它。

    你也可以把它当作一个字符串:

    <xsl:stylesheet version="1.0"
      xmlns:saxon="http://saxon.sf.net/"
      exclude-result-prefixes="saxon"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <Root>
          <!--xsl:value-of select="saxon:parse(/books/book/content)"/-->
          <xsl:for-each select="books/book/content">
            <xsl:value-of select="
              substring-before(
              substring-after( . , '&gt;' ), '&lt;' ) "/>
          </xsl:for-each>
        </Root>
      </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2012-10-23
      • 2014-10-11
      • 2010-10-08
      • 2013-03-16
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多