这是一个非常简单的问题。我有一个像这样的XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<test:main xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:test="http://www.testexample.com/test" xmi:id="_BMseoD4mEeiL8o0bAkMKoA">
<childNode xmi:id="_9_RgZj4lEeiL8o0bAkMKoA" name="Boo!" number="1.414"/>
<childNode xmi:id="_9_RgYz4lEeiL8o0bAkMKoA" name="toto" number="42"/>
<childNode xmi:id="__o_QMT4lEeiL8o0bAkMKoA" name="paf" number="12.215"/>
<childNode xmi:id="_vUeScDy9EeilM5T6mGX42Q" name="pif" number="56.1"/>
</test:main>
我想更改 toto 的 number 的值,例如给它值42.42。 我怎么能这样做?
感谢您的关注!
编辑:
以下代码效果很好:
import groovy.xml.*
def myTest = '''
<test:main xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:test="http://www.testexample.com/test" xmi:id="_BMseoD4mEeiL8o0bAkMKoA">
<childNode xmi:id="_9_RgZj4lEeiL8o0bAkMKoA" name="Boo!" number="1.414"/>
<childNode xmi:id="_9_RgYz4lEeiL8o0bAkMKoA" name="toto" number="42"/>
<childNode xmi:id="__o_QMT4lEeiL8o0bAkMKoA" name="paf" number="12.215"/>
<childNode xmi:id="_vUeScDy9EeilM5T6mGX42Q" name="pif" number="56.1"/>
</test:main>
'''
myTest = new XmlParser(false, true).parseText(myTest)
myTest.childNode.find { obj ->
obj.@name == 'toto'
}.@number = 42.42
println XmlUtil.serialize( myTest )
感谢您的帮助!
答案 0 :(得分:0)
这里我使用了一个示例xml文件。试试这段代码:
import groovy.xml.XmlUtil
String xmlfile ='''<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price name="dollars" mode="online">5.95</price>
<description>
Two of our famous Belgian Waffles with plenty of real maple syrup
</description>
<calories>650</calories>
</food>
</breakfast_menu>'''
def root = new XmlSlurper().parseText(xmlfile)
root.food.price.find{ it["@name"] =="dollars"}.@ "mode"='offline'
println (XmlUtil.serialize(root))
对于更多操作,请阅读Groovy doc link