XML の一部を次に示します。
<xml>
<section>
<element>good</element>
<section class="ignored">
<element>bad</element>
</section>
</section>
</xml>
elements
all 、またはelements
a 内のall を選択するのは簡単section.ignored
です:
@doc.css('element').text
=> "goodbad"
@doc.css('section.ignored element').text
=> "bad"
しかし、内部にないelements
ものをすべて選択するにはどうすればよいですか? これは機能しません:section.ignored
@doc.css('section:not(.ignored) element').text
=> "goodbad"
...実際には、他のすべてをラップする最上位セクションを含め、「無視されないセクションに含まれるすべての要素」を意味するためです!
追加のひねり: 上記の単純化されたサンプルとは異なり、対処しなければならない実際の XML は、無視されたセクション内のセクションを含め、任意の深さまでネストされています。
そして、はい、Ruby の完全な配列から悪い配列を差し引いて、1 日と呼ぶこともできますが、可能であれば、純粋な CSS ソリューション (または、必要に応じて XPath) を使用したいと思います。