3

XmlSlurperGPathを使用して XML ツリーを分析しようとしていますが、findAllメソッドの動作に混乱しています。

たとえば、次の XML ツリーがあるとします。

<html>
    <body>
        <ul>
            <li class="odd"><span>Element 1</span></li>
            <li class="even"><span>Element 2</span></li>
            <li class="odd"><span>Element 3</span></li>
            <li class="even"><span>Element 4</span></li>
            <li class="odd"><span>Element 5</span></li>
        </ul>
    </body>
</html>

がのメソッドのxml1 つによって初期化されていると仮定すると、次のコードは期待どおりに実行されます。XmlSlurperparse

// Prints:
// odd
// odd
// odd
xml.body.ul.li.findAll {it.@class == 'odd'}.@class.each {println it.text()}

一方で:

// Doesn't print anything.
xml.body.ul.li.findAll {it.@class == 'odd'}.span.each {println it.text()}

@特別なプロパティ (および などの他のプロパティ) を使用できるのに、 **「通常の」プロパティを使用できない理由を理解するのに苦労しています。

私は API コードを調べましたが、さらに混乱しているのは、getProperty( にある) 実装GPathResultが私がやろうとしていることをサポートしているように見えることです。

私は何が欠けていますか?

4

1 に答える 1

3

を繰り返し処理する必要があるspanため、スプレッドドット演算子を使用できます。

xml.body.ul.li.findAll {it.@class == 'odd'}*.span.each {println it.text()}
于 2013-04-10T14:12:22.913 に答える