2011-09-08 51 views
3

我正在寫ruby中的一些驗收測試,這涉及在響應XML中聲明值的存在。REXML - 如何提取單個元素

我的XML是這樣的:

<?xml version="1.0"?> 
<file xmlns:dvi=xxxxx> 
    <name>whatever</name> 
</file> 

還有其他的屬性,但高於自己的應說明我的觀點。這裏是我的Ruby代碼:

xml = <the xml above> 
xmlDoc = REXML::Document.new(xml) 
puts xmlDoc.elements().to_a('file/name') 

此打印出<name>whatever</name>,但我想將它打印出來whatever

在這個XML有隻會永遠是一個名稱的元素。我已經能夠使用elements.each打印出我想要的文字,但看起來好像過度。

感謝, 阿德里安

回答

4

嘗試

xmlDoc.elements().to_a('file/name').first.text 

,然後添加一些錯誤處理(這是不穩健)。

to_a返回一個REXML元素數組。用first您可以首先檢索 (並且應該是唯一的)元素。用text您可以訪問該元素的文本內容。

+0

謝謝你,親切! – Adrian

+0

感謝您的建議。對於這個特定的測試,將只有一個名稱(它獲取文件的元數據)。我還有其他測試,其中將返回多個元素,但我想我現在知道該怎麼做。再次感謝。 – Adrian