2014-01-10 206 views
0

我从我的RSS提要中获取正确的信息时遇到了一些问题。使用Xpath从CDATA中的节点获取信息?

这就是饲料的样子。

<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做。

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

回答

0

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

可能的解决方案:

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