2016-05-01 5 views
0

Ich versuche, XML zu konvertieren mit Nokogiri auf einen Hash:Rubin Umwandlung nokogiri xml Hash

<eveapi version="2"> 
    <currentTime>2016-05-01 11:38:14</currentTime> 
    <result> 
    <characterID>93898118</characterID> 
    <characterName>Ghitzarai</characterName> 
    <race>Minmatar</race> 
    <bloodlineID>4</bloodlineID> 
    <bloodline>Brutor</bloodline> 
    <ancestryID>24</ancestryID> 
    <ancestry>Slave Child</ancestry> 
    <corporationID>98012663</corporationID> 
    <corporation>Dry Atomic Fusion</corporation> 
    </result> 
</eveapi> 

# asume xml is the above XML 
hash = {} 
xml.xpath('//result').each do |row| 
    hash[get_node_name:] = row.content 
end 

Jetzt row.name nicht Ursache arbeiten, die nur result einmal zurückgibt.

Wie bekomme ich die richtigen Namen von den Kindknoten?

+0

I notised nur die Länge von xml.xpath ('// Ergebnis') ist onyl 1. so stellt sich auch die Frage, wie man über die childs –

+1

Schleife Verwenden Sie '... xpath ('// Ergebnis/*') ...'? – har07

+0

Aah, ja das funktioniert. Danke vielmals! –

Antwort

2

„jetzt row.name nicht funktioniert Ursache, dass nur Renditen einmal zur Folge hat. Wie die richtigen Namen von dem untergeordneten Knoten bekommen?“

/* nach result hinzufügen alle geordneten Elemente <result> unabhängig von dem Kind Elementnamen zu erhalten:

xml.xpath('//result/*').each do |row|