は次のようにXML構造が与えられている場合:鋸山チェックXML要素は、子ノード
ルビーを使用して<homes>
<home>
<name>home 1</name>
</home>
<home>
<name>home 2</name>
</home>
</homes>
<flats>
<flat>Flat 1</flat>
</flats>
を、私は、ノードを反復処理し、子要素が別の要素またはテキストノードであるかどうかを確認する方法を鋸山?
基本的に子ノードが別の要素である場合、私はそれが単なるテキストノードであった場合よりも出力を使って行うことを変更する必要があります。
キー名を知らずにこれを行う必要があります。
例として、(私はこれが子要素を持っていることを知っているように)キー名をチェックすれば、私はちょうど私が望むことができますが、これは一般的でデータ固有ではない必要があります。私は、キーの名前を知らないかもしれない実際のデータと同様にif element.name === 'home'
:これを使用しないようにしようと
repeatingElements = []
nodes.each do |element|
case element
when Nokogiri::XML::Element
child_content = map_content(element.children, {})
if element.name === 'home'
repeatingElements << {
element.name => child_content
}
content_hash = repeatingElements
else
content_hash[element.name] = child_content unless child_content.empty?
end
when Nokogiri::XML::Text
return element.content
end
end
content_hash
end
イム:
これは私がキー名をチェックして持っているものです。