我想遍历xml文件中的所有<HeadA>
和<HeadB>
元素,并为每个元素添加一个唯一的i d。到目前为止,我尝试的方法是:
@xml.each_element('//HeadA | //HeadB') do |heading|
#add a new id
end
问题是,xpath
//HeadA | //HeadB
中的nodeset是所有的HeadA
s后跟所有的HeadB
s。我需要的是所有HeadA
s和HeadB
s按照它们在文档中出现的顺序的有序列表。为了澄清这一点,我的xml可以如下所示:
<Doc>
<HeadA>First HeadA</HeadA>
<HeadB>First HeadB</HeadB>
<HeadA>Second HeadA</HeadA>
<HeadB>Second HeadB</HeadB>
</Doc>
我从xpath中得到的是:
<HeadA>First HeadA</HeadA>
<HeadA>Second HeadA</HeadA>
<HeadB>First HeadB</HeadB>
<HeadB>Second HeadB</HeadB>
当我需要得到的是按顺序排列的节点时:
<HeadA>First HeadA</HeadA>
<HeadB>First HeadB</HeadB>
<HeadA>Second HeadA</HeadA>
<HeadB>Second HeadB</HeadB>
所以我可以按顺序添加id。
最佳答案
好的,第二次试试,但我想这次我有了:p
@xml.each_element('//*[self::HeadA or self::HeadB]') do |heading|
puts heading.text
end