簡體   English   中英

使用Ruby LibXML在Atom中找不到節點

[英]Can't find nodes in Atom with Ruby LibXML

我有以下XML文檔:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:apps=\"http://schemas.google.com/apps/2006\" xmlns:gd=\"http://schemas.google.com/g/2005\">
  <apps:property name=\"memberId\" value=\"Tom\"/>
</atom:entry>

我要做的就是獲取apps:property節點。 但是,我在LibXML中嘗試的所有操作均未返回任何結果。

此處閱讀LibXML :: XML :: XPath的LibXML文檔。 我假設我不需要指定兩個名稱空間,因為它們是在根節點上定義的。

這是我嘗試過的:

@document.find('/apps:property')
@document.find('//apps:property')
@document.find('/atom:entry/apps:property')
@document.find('//atom:entry/apps:property')
@document.find('/property')
@document.find('/atom:entry')
@document.find('//property')
@document.find('/entry')

以上都不返回指定文檔的結果。 我也嘗試過使用原子和應用程序命名空間定義的不同組合對它們進行所有處理,但似乎沒有效果。

如果有人能告訴我我必須錯過的一件非常簡單的事情,將不勝感激。


事實證明,問題出在動態創建的文檔而不是從文件中讀取。

當我將文檔寫入文件並讀入文件時,便可以進行搜索。 當我創建文檔時,創建根元素並以編程方式添加子元素,每次嘗試搜索時,得到的結果都是nil,奇怪的是,每個元素都可以正常工作。 在搜索文檔之前,是否必須對文檔進行“定稿”或其他一些愚蠢的事情?

如果我明確解析該文檔,則可以對其進行搜索。

除非在構建文檔時可能生成解析樹,否則看起來這可能是解決方案。

是時候看一下我猜想的代碼了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM