9

Groovy で XmlSlurper を使用して XML を解析中に属性を読み取ろうとしています。ハイフン付きの属性を読み取ろうとするとmodel-number、例外が発生します。

<router name="b" id="x" manufacturer-id="e" model-number="a"/>
4

3 に答える 3

11
def a = "<router name='b' id='x' manufacturer-id='e' model-number='a'/>"

def router = new XmlSlurper().parseText(a)

    println router.@'manufacturer-id'
    println router.@'name'
    println router.@'id'
    println router.@'model-number'

コンソールでこれを試しましたが、動作しています。

于 2011-10-12T08:44:41.550 に答える
3

XMLSlurperに関するGroovyのドキュメントから:

要素にダッシュなどの文字が含まれている場合は、要素名を二重引用符で囲むことができます。

例:

def myXML = '<router name="b" id="x" manufacturer-id="e" model-number="a"/>'
def router = new XmlSlurper().parseText(myXML)
def attr =  router.@"model-number".text()

私のためにテストし、働いた。

于 2011-10-12T08:41:25.187 に答える
2

また、変数を使用してハイフン付き (およびハイフンなし) の属性を処理することもできます。これは、不明な属性または一貫性のない属性 (送信された Web フォームなど) を含む XML の一般的な処理に役立つ場合があります。

ハイフンの有無に関係なく、XML のすべての属性をループする例を次に示します。

def xml = "<router name='b' id='x' manufacturer-id='e' model-number='a'/>"
def router = new XmlSlurper().parseText(xml)
for (String attrib : router.attributes().keySet()) {
    value = router.@"$attrib".text()
    println("${attrib}=${value}")
}
于 2014-02-24T14:21:56.963 に答える