Ruby Nokogiri中的CSS/Xpath同级选择器
我有并且只需要为Ruby Nokogiri中的CSS/Xpath同级选择器,ruby,xml,xpath,css-selectors,nokogiri,Ruby,Xml,Xpath,Css Selectors,Nokogiri,我有并且只需要为ref type的contrib带有子xref节点的contrib标记获取名字和姓氏 我只希望在*的条件下使用同级节点,即输出: => Andricioaei => Ioan 目前,我没有参考ref-type,而是在xref标记中选择星号(两者都是合适的)。问题实际上是XPath获取姓氏和给定名称的问题,即XPath对于以下行不正确: puts surname = corrdetails.xpath( "//surname" ).text puts givennam
ref type
的contrib
带有子xref
节点的contrib
标记获取名字和姓氏
我只希望在*
的条件下使用同级节点,即输出:
=> Andricioaei
=> Ioan
目前,我没有参考ref-type
,而是在xref
标记中选择星号(两者都是合适的)。问题实际上是XPath获取姓氏和给定名称的问题,即XPath对于以下行不正确:
puts surname = corrdetails.xpath( "//surname" ).text
puts givennames = corrdetails.xpath("//given-names").text
用/
启动XPath意味着在文档中的任何位置查找节点。您只需要查看corrdails
节点,这意味着XPath需要以点开头,例如,/
将这两行更改为:
puts surname = corrdetails.xpath( ".//surname" ).text
puts givennames = corrdetails.xpath(".//given-names").text
我对Nokogiri一无所知,但相关的XPath可能是//name[以下兄弟姐妹::xref[@ref type=“corresp”]]/concat(给定名称,”,姓氏)
。这是XPath 1.0吗?nokogiri不能使用2.0,我也不知道那些选择器在1.0中,如果我错了,那就太好了……我不认为XPath 1.0不支持该表达式中的任何内容<代码>以下同级::
和concat
都在规范中。我得到一个错误,即存在多余的)
现在,我不知道如何-放置corrdetails.xpath(//name[以下同级::xref[@ref type=“corresp”]])
可能需要转义“
在查询中。顺便说一句,您的XML无效。您有
,但没有
。这可能是复制粘贴错误。太棒了!非常感谢
puts surname = corrdetails.xpath( "//surname" ).text
puts givennames = corrdetails.xpath("//given-names").text
puts surname = corrdetails.xpath( ".//surname" ).text
puts givennames = corrdetails.xpath(".//given-names").text