【问题标题】:Getting info from nodes in CDATA with Xpath?使用 Xpath 从 CDATA 中的节点获取信息?
【发布时间】:2014-01-10 14:32:29
【问题描述】:

我在从我的 RSS 提要中获取正确信息时遇到了一点问题。

这就是提要的样子。

<description>
<![CDATA[<img height="64" width="64" align="top" src="http://www.festivalfoton.nu/images/festivaler/skogsrojet.jpg" alt="" title="" width="222" height="222" />
<datum>1 - 2 augusti</datum>
<stad>Rejmyre</stad>
<pris>690 kronor</pris>]]>
</description>

我尝试获取不同节点内的信息,并使用以下命令:

[data:row("description/stad")]

但是什么也没发生,我知道这与 CDATA 有关。

我能做什么?有人知道吗?

【问题讨论】:

    标签: xml xpath rss nodes cdata


    【解决方案1】:

    CDATA 对文本节点进行编码,您可以使用 description/text() 查询这些节点。您不能查询里面的“节点”,因为它们没有(但只有大的纯文本节点)。

    可能的解决方案:

    • 修复输入以实际移交 XML 数据而不是文本节点
    • 再次将文本节点解析为 XML(但请注意,它不是有效的 XML,因为它缺少公共根节点)
    • 使用一些可能可以再次解析文本节点的专有扩展,但很可能这些仅在成熟和更新的 XQuery/XSLT 引擎中可用(其中包括嵌入的 XPath语言)。
    • 在解析之前“修复”XML,并使用正则表达式/字符串搜索删除 CDATA 标记。非常丑陋的解决方案,而且更有可能崩溃,但这取决于您需要做什么以及多久执行一次(单次分析或长时间运行的服务器软件?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2023-02-10
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多