2016-06-29 14 views
0

Ich erhalte eine XML-Datei von einer API. Ich versuche, es mit Mechanize zu analysieren, die es als XML-Datei erhält. Das zugrunde liegende ist Nokogiri. Was auch immer ich tue, ich kann es scheinbar nicht bekommen, irgendetwas mit irgendwelchen xpath Variablen zurückzugeben. Es scheint die XML-Datei gut zu erkennen, d. H. Es kommt als Mechanize :: XmlFile und zeigt die Elemente, wenn ich Nokogiri verwende.Mechanize/Nokogiri kann XML mit Xpath nicht analysieren

Ich kann laufen.

xml.at("/") 

und bekomme eine Antwort, aber jede andere .at oder .Suche, die ich ausführe, gibt nil zurück. z.B.

xml.at("//Duration") 

Eine Beispielantwort ist unten.

@body = 
"<JobSearchResults xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.aspiremediagroup.net/jobboard/1.0/Beta\"><Duration>P0DT0H0M0.328S</Duration><JobCount>0</JobCount><JobIDs /><Jobs /><PageCount>0</PageCount><PageNo>0</PageNo><PageSize>20</PageSize><ProximityStats i:nil=\"true\" /><RoleSuggestions><String>ADDING</String></RoleSuggestions><Search><AccountGroupIDs i:nil=\"true\" /><AccountIDs i:nil=\"true\" /><ExcludeUnknownSalaries>false</ExcludeUnknownSalaries><Industries i:nil=\"true\" /><JobIDsOnly>false</JobIDsOnly><JobTypes><ID>Any</ID></JobTypes><Locations><Location><Country>GBR</Country><ID i:nil=\"true\" /><Latitude i:nil=\"true\" /><Longitude i:nil=\"true\" /><ParentLocation i:nil=\"true\" /><Text i:nil=\"true\" /></Location></Locations><MaxAge i:nil=\"true\" /><MaxDistance>25</MaxDistance><Page>1</Page><PageSize>20</PageSize><Role>adgqeg</Role><Salaries i:nil=\"true\" /><Skills i:nil=\"true\" /><SortOrder>OVERALL_SCORE_DESC</SortOrder></Search><SkillsSuggestions><String i:nil=\"true\" /></SkillsSuggestions><Started>2016-06-29T08:53:18.2215898Z</Started><ThisPageSize>0</ThisPageSize></JobSearchResults>" 

Irgendwelche Ideen, warum das nicht funktioniert?

+0

'doc.at ('Search/Locations ') 'und' doc.at (' Duration ') 'funktionieren beide für mich. Was genau bekommst du nicht mit 'at'? – mudasobwa

+0

Interessant ... Ich suche "// Dauer" und bekomme nichts .. aber du hast richtig "Dauer" funktioniert. – Carpela

+0

Verwenden Sie Mechanize zum Parsen von XML? Es ist entworfen, um mit HTML zu arbeiten, wenn Sie sind, verwenden Sie einfach Nokogiri allein. Lesen Sie auch "[mcve]". Wir benötigen das kleinste Beispiel für die XML-Eingabe, die das Problem veranschaulicht, sowie Ihren Mindestcode, der das Problem und die erwartete Ausgabe veranschaulicht. –

Antwort

0

Scheint, wie

xml.remove_namespaces! 

behebt das Problem ausgeführt und ermöglicht die Suche nach dem Dokument // Stil XPath-Variablen.

Ich vermute, es gibt eine bessere Lösung als das da draußen.