我有一些需要从中提取值的xml。非常简化的版本如下:
...
<event id="380783">
...
<competitor id="1929" name="x">
<homeaway>home</homeaway>
</competitor>
...
</event>
...
有很多比赛项目,每个项目都有一个“主队”和一个“客队”-我需要得到主队和客队的参赛者id,但我需要知道是哪一个。
我自己就可以得到这样的身份证:
doc.xpath("//event[@id=#{uid}]//competitor").attr('id').value
我还可以找出给定的节点是“home”还是“away”
2.1.1 :107 > first_match.xpath('//event[@id=#{uid}]//competitor//homeaway').children[0].text
=> "home"
2.1.1 :108 > first_match.xpath('//event[@id=#{uid}]//competitor//homeaway').children[1].text
=> "away"
但我想找出身份证的范围是在家还是在外类似于:
away = xpath('//event[@id=#{uid}]//competitor//homeaway).children.text == away
away.parent.attr('id')
我该怎么做?
最佳答案
这个如何(使用ancestor
轴获得id
的competitor
):
home_id = doc.at_xpath(
"//event[@id=#{uid}]//competitor//homeaway[text()='home']" +
"/ancestor::competitor/@id").value
away_id = doc.at_xpath(
"//event[@id=#{uid}]//competitor//homeaway[text()='away']" +
"/ancestor::competitor/@id").value
关于ruby - 使用Nokogiri根据子属性的值提取父属性的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24956542/