2016-04-20 15 views
0

Mein Ziel ist es, XML-Elemente alphabetisch zu sortieren. Ich fand Lösung hier: Sort elements of arbitrary XML document recursivelyGroovy - XML-Elemente sortieren

Teil:

def x = '''<foo b="b" a="a" c="c"> 
<qwer> 
<!-- A comment --> 
<zxcv c="c" b="b">Some Text</zxcv> 
<vcxz c="c" b="b"/> 
</qwer> 
<baz e="e" d="d">Woo</baz> 
<bar> 
<fdsa g="g" f="f"/> 
<asdf g="g" f="f"/> 
</bar> 
</foo>''' 

def order(node) { 
[ *:node.attributes() ].sort().with { attr -> 
    node.attributes().clear() 
    attr.each { node.attributes() << it } 
} 
node.children().sort() 
       .grep(Node) 
       .each { order(it) } 
node 
} 

def doc = new XmlParser().parseText(x) 

println groovy.xml.XmlUtil.serialize(order(doc)) 

in Groovy Web Console, ist es immer XML-Knoten in unterschiedlicher Reihenfolge zurückzukehren, nicht alphabetisch. Ich kann keine XSLT-Transformation verwenden, dies funktioniert möglicherweise für jedes XML-Dokument.

Gibt es Hilfe zum Ändern des Codes?

Antwort

0

Attribute als HashMap gespeichert sind, haben daher keinen Auftrag

Sie nicht einen Auftrag in XML haben entweder

Also ich glaube nicht, dass du sie

sortieren