2014-01-10 93 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標記。真的很糟糕的解決方案,更有可能中斷,但取決於你需要做什麼和多久(單次分析或長期運行的服務器軟件?)。