2015-06-22 2 views
1

Может кто-нибудь помочь мне в извлечении значения узла для элемента «Имя».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 

Выход: Ram, Сэм

Тип 2: Теперь мне нужно получить тот же отформатированный результат для ниже xml, как я могу его получить

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

Когда я использую тот же код для этого, я не получаю никакого вывода или ошибки.

В зависимости от ввода пользователя, я получаю либо тип 1 xml, либо тип 2 xml как выход. Для обоих случаев мне нужно извлечь значение элемента name. Если это более одного элемента с тем же именем, тогда запятая разделяет значения.

ответ

0

Попробуйте использовать css вместо xpath, это будет работать для вас,

doc = Nokogiri::XML(response.body) 

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

puts values 
=> Ram,Sam 
+0

Привет Mourad, спасибо так много. Это сработало:):) – Gifty

Смежные вопросы