使用Xpath从CDATA中的节点获取信息?

时间:2014-01-10 14:32:29

标签: xml xpath rss nodes cdata

我从RSS-feed获取正确的信息时遇到了一些问题。

这就是Feed的样子。

<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有关。

我该怎么办?有没有人有线索?

1 个答案:

答案 0 :(得分:0)

CDATA对您可以使用description/text()查询的文本节点进行编码。您无法查询内部的“节点”,因为它们都不是(但只有大型纯文本节点)。

可能的解决方案:

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