2015-06-22 156 views
1

有人可以帮助我提取元素“Name”的节点值。Ruby-获取xml节点值

类型1:我能够通过使用下面的代码来提取如下XML的 “名称” 值

<Element> 
    <Details> 
     <ID>20367</ID>  
     <Name>Ram</Name> 
     <Name>Sam</Name> 
    </Details> 
</Element> 


doc = Nokogiri::XML(response.body)  
values = doc.xpath('//Name').map{ |node| node.text}.join ',' 
puts values 

输出:拉姆,山姆

类型2:现在,我需要得到相同的格式化输出为下面的xml,我怎样才能得到它

<Response xmlns="http://abc.def" xmlns:i="http://www.org"> 
    <Name>Ram</Name> 
    <Name>Sam</Name> 
</Response> 

当我为此使用相同的代码时,我没有收到任何输出或错误。

取决于用户的输入,我得到类型1 xml或类型2 xml作为输出。对于这两种情况,我需要提取“名称”元素值。 如果它是多个具有相同名称的元素,则用逗号分隔这些值。

回答

0

尝试使用css代替xpath,这会为你工作,

doc = Nokogiri::XML(response.body) 

values = doc.css('Name').select{|name| name.text}.join',' 

puts values 
=> Ram,Sam 
+0

嗨穆拉德,太谢谢你了。有效:):) – Gifty