我想遍历所有 <HeadA>
和 <HeadB>
XML 文件中的元素,并为每个元素添加一个唯一的 ID。到目前为止我尝试过的方法是:
@xml.each_element('//HeadA | //HeadB') do |heading|
#add a new id
end
问题是,来自 XPath 的节点集 //HeadA | //HeadB
是所有HeadA
s 后跟所有 HeadB
秒。我需要的是所有 HeadA
的有序列表s 和 HeadB
按照它们在文档中出现的顺序排列。
澄清一下,我的 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
关于ruby - 使用 REXML XPath 按顺序获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184683/