Groovy で XmlSlurper を使用して XML を解析中に属性を読み取ろうとしています。ハイフン付きの属性を読み取ろうとするとmodel-number
、例外が発生します。
<router name="b" id="x" manufacturer-id="e" model-number="a"/>
Groovy で XmlSlurper を使用して XML を解析中に属性を読み取ろうとしています。ハイフン付きの属性を読み取ろうとするとmodel-number
、例外が発生します。
<router name="b" id="x" manufacturer-id="e" model-number="a"/>
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'
コンソールでこれを試しましたが、動作しています。
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()
私のためにテストし、働いた。
また、変数を使用してハイフン付き (およびハイフンなし) の属性を処理することもできます。これは、不明な属性または一貫性のない属性 (送信された 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}")
}