Как добавить атрибут XML с помощью Groovy?

#groovy

#groovy

Вопрос:

Мне нужно добавить @ attribute к корневому элементу фрагмента XML в Groovy. Я хочу использовать XmlSlurper . Как это сделать? Добавлять элементы легко.

Ответ №1:

Запустите это в консоли Groovy, чтобы убедиться, что это работает

 import groovy.xml.StreamingMarkupBuilder

// the original XML
def input = "<foo><bar></bar></foo>"

// add attributeName="attributeValue" to the root
def root = new XmlSlurper().parseText(input)
root.@attributeName = 'attributeValue'

// get the modified XML and check that it worked
def outputBuilder = new StreamingMarkupBuilder()
String updatedXml = outputBuilder.bind{ mkp.yield root }

assert "<foo attributeName='attributeValue'><bar></bar></foo>" == updatedXml
  

Комментарии:

1. Верно, это было просто. Теперь я вижу, что я все делал правильно 🙂 Я только забыл сериализовать вывод. Спасибо!

Ответ №2:

добавление атрибута — это то же самое, что и его чтение:

 import groovy.xml.StreamingMarkupBuilder

def input = '''
<thing>
    <more>
    </more>
</thing>'''

def root = new XmlSlurper().parseText(input)

root.@stuff = 'new'

def outputBuilder = new StreamingMarkupBuilder()
String result = outputBuilder.bind{ mkp.yield root }

println result
  

даст вам:

 <thing stuff='new'><more></more></thing>