指定された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 を使用する場合と比べて非常にばかげているようです。助言してください、ありがとう:)