Groovy: чтение XML из файла и добавление к нему узла - PullRequest
0 голосов
/ 06 июля 2018

У меня есть XML-файл, скажем, abc.xml в местоположении (C: /Users/abc.xml), я хочу обновить его, добавив одну зависимость модуля.

abc.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ This is free software; you can redistribute it and/or modify it
  ~ under the terms of the GNU Lesser General Public License as
  ~ published by the Free Software Foundation; either version 2.1 of
  ~ the License, or (at your option) any later version.
  -->

<module xmlns="urn:jboss:module:1.3" name="org.picketbox">
    <!-- This module is deprecated and subject to being removed in a subsequent release. -->
    <properties>
      <property name="jboss.api" value="deprecated"/>
    </properties>

    <resources>
        <resource-root path="picketbox-4.9.6.Final.jar"/>
        <resource-root path="picketbox-infinispan-4.9.6.Final.jar"/>
        <resource-root path="picketbox-commons-1.0.0.final.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.persistence.api" optional="true"/>
    </dependencies>
</module>

Я пытался добавить имя модуля = "javax.xyz" в зависимости секцию по коду ниже

def fileLocation = "C:/Users/abc.xml"
def abcXML = new XmlSlurper().parse(new File(fileLocation))
abcXML.dependencies.appendNode {
     module {
         name 'javax.xyz'
     }
}
XmlUtil.serialize(abcXML); 

Это не работает без ошибок, тот же код работает для простого XML-файла (без комментариев и только с одним узлом).

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте это

import groovy.xml.QName
import groovy.xml.XmlUtil

def xml = new File("C:/Users/abc.xml").text
def parser = new XmlParser()
def root = parser.parseText(xml)
def numberOfResults = parser.createNode(root.dependencies[0], new QName("module"), ["name":"javax.xyz"])
println XmlUtil.serialize(root)

Вы можете обратиться к документации здесь http://groovy -lang.org / processing-xml.html # _adding_nodes

...