既存のXMLに親ノードを挿入する必要があります。親ノードに子ノードを追加する方法の例を見つけましたが、xmlに新しいルートノードを追加する方法はありません。しかし、Groovyを使用したXMLへの親ノードの追加
class Test {
static stringXML = "C:/Users/xyz/original.xml"
static main(args) {
def baseXML = new XmlSlurper().parse(new File(stringXML))
baseXML.cars.parent.appendNode('List_Wrapper')
def writer = new FileWriter("C:/Users/xyz/updated.xml")
groovy.xml.XmlUtil.serialize(baseXML,writer)
}
}
: 私のソースXMLは
<?xml version="1.0" encoding="UTF-8" ?>
<Cars>
<Car>
<Make>Hyundai</Make>
<Model>Accent</Model>
<Year>2016</Year>
</Car>
<Car>
<Make>Mitsubishi</Make>
<Model>Mirage</Model>
<Year>2016</Year>
</Car>
<Car>
<Make>Ford</Make>
<Model>Fiesta</Model>
<Year>2017</Year>
</Car>
</Cars>
で、私の新しいXMLは次のようになります。このような何かを意味し、私はgroovy.Iに新しいです
<?xml version="1.0" encoding="UTF-8" ?>
<List_Wrappers>
<Cars>
<Car>
<Make>Hyundai</Make>
<Model>Accent</Model>
<Year>2016</Year>
</Car>
<Car>
<Make>Mitsubishi</Make>
<Model>Mirage</Model>
<Year>2016</Year>
</Car>
<Car>
<Make>Ford</Make>
<Model>Fiesta</Model>
<Year>2017</Year>
</Car>
</Cars>
</List_Wrappers>
タグは追加されませんが、変更されたXMLは次のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<tag0:Cars>
<tag0:Car>
<tag0:Make>Hyundai</tag0:Make>
<tag0:Model>Accent</tag0:Model>
<tag0:Year>2016</tag0:Year>
</tag0:Car>
<tag0:Car>
<tag0:Make>Mitsubishi</tag0:Make>
<tag0:Model>Mirage</tag0:Model>
<tag0:Year>2016</tag0:Year>
</tag0:Car>
<tag0:Car>
<tag0:Make>Ford</tag0:Make>
<tag0:Model>Fiesta</tag0:Model>
<tag0:Year>2017</tag0:Year>
</tag0:Car>
</tag0:Cars>
これを理解する際に助けが必要です。あなたのコード内
どうもありがとうございました。 List_Wrapperノードが正常に追加されました。しかし、私はまた、ルートノードを追加する以外に、XML内の他のものを変更したくありません。しかし、現在、接頭辞「tag0」がXMLに追加されており、XML全体が変更されています。どうすればそれを避けることができますか? –
@SayantaniRoyChaudhuri 'tag0'の問題を避けるために' xmlParser() 'を使ってxmlを解析します。 –
@SayantaniRoyChaudhuriこの答えがあなたの問題を解決するとわかったら、それは答えとして受け入れられ、アップヴォートの対象となるべきです。 Learn https://stackoverflow.com/help/someone-answers –