首页 文章

Mechanize / Nokogiri无法使用xpath解析XML

提问于
浏览
0

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

任何想法为什么不起作用?

2 回答

  • 0

    好像在跑步

    xml.remove_namespaces!
    

    修复问题并允许使用//样式xpath变量搜索文档 .

    我怀疑有比那更好的解决方案 .

  • 0

    我个人更喜欢.css选项:

    xml.css("Duration")
    

    人们还可以使用:

    xml.at_css("Duration")
    

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

相关问题