2016-06-29 4 views
0

APIからxmlファイルを受け取りました。 私はそれをXMLファイルとして受け取るMechanizeで解析しようとしています。 これは、Nokogiriです。 私は何でもxpath変数で何かを返すようには思えません。 xmlファイルは、Mechanize :: XmlFileとして提供され、Nokogiriを使用すると要素を表示します。Mechanize/NokogiriがxpathでXMLを解析できない

実行できます。

xml.at("/") 

応答を取得しますが、他の.atまたは.searchを実行するとnilが返されます。例:

xml.at("//Duration") 

応答の例を以下に示します。

@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>" 

なぜ機能しないのでしょうか?

+0

'doc.at( '検索/ Locations ') 'と' doc.at(' Duration ') 'はどちらも私のために働きます。あなたが 'at 'で検索するのに失敗したのは何ですか? – mudasobwa

+0

面白い... 「// Duration」を検索していて何も取得していませんが、「Duration」は正しいです。 – Carpela

+0

Mechanizeを使用してXMLを解析していますか? HTMLを使って作業するように設計されています.Nokogiriを単独で使用するだけです。また、「[mcve]」も読んでください。問題を示す最小のXML入力と、問題と期待される出力を示す最小限のコードが必要です。 –

答えて

0

xml.remove_namespaces! 

修正問題を実行しているように思えるし、//スタイルのXPath変数を使用して文書の検索を可能にします。

そこよりも優れた解決策があると私は思っています。

xml.css("Duration") 

一つでも使用することができます:

関連する問題