给定xml
<a>
<b key=1>
<c value=xxx />
</b>
<b key=2>
<c value=yyy />
</b>
</a>
目标:首先获取每个“b”,然后获取该“b”下的“c”,如下面的结果。使用 XPath 搜索孩子。
for <b key=1>
<c value=xxx />
for <b key=2>
<c value=xxx />
但下面的代码
b_elements = XPath.match(xml, "//b[@key]")
b_elements.each do |b_element|
puts b_element.elements["//c"]
end
将导致屈服
for <b key=1>
<c value=xxx />
<c value=yyy />
for <b key=2>
<c value=xxx />
<c value=yyy />
而不是只在每个“b”下获得“c”
我试过下面的方法但没有运气,似乎如果使用Xpath,它会自动从根元素搜索
b.get_elements("//c")
XPath.first(b, "//c")
我现在的解决方法是一次遍历 1 层子元素并搜索所需的键,与使用 XPath 相比,这似乎很愚蠢。请指教,谢谢:)