Mechanize / Nokogiri无法用xpath解析XML



我从API接收一个xml文件。我试图用Mechanize解析它,它接收它作为XML文件。这背后是Nokogiri。无论我做什么,我似乎都无法让它返回任何带有xpath变量的东西。它似乎可以很好地识别xml文件,即它以Mechanize::XmlFile的形式出现,如果我使用Nokogiri,它会显示元素。

我可以跑。

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

知道为什么不工作吗?

好像在跑步

xml.remove_namespaces!

修复了这个问题,并允许使用//样式的xpath变量搜索文档。

我怀疑有更好的解决方案。

我个人更喜欢。css选项:

xml.css("Duration")

也可以使用:

xml.at_css("Duration")

更多信息可以在这里找到:http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html

相关内容

  • 没有找到相关文章

最新更新