2017-12-22 14 views
0

groovyを使用してxmlファイルを修正しようとしていますが、その間に簡単なコメントを追加することができません。人の名前を変更してxmlのルートにコメントを追加するにはどうすればよいですか?私は、出力したいxmlにコメントを追加して追加する方法

<?xml version="1.0" encoding="UTF-8"?> 
<person> 
    <name>John</name> 
</person> 

のxml::私が読んでいる

XML

<?xml version="1.0" encoding="UTF-8"?> 
<!-- comment --> 
<person> 
    <name>Batman</name> 
</person> 
+1

あなたは '最もeffectively'を定義することができます:あなたはStreamingMarkupBuilderを使用することができますコメントを追加するたとえば

?そして、上記のコメント例の何が間違っていますか? –

+0

少し具体的に質問を更新しました。私は基本的にxmlのルートにコメントを追加する方法は全く知らない。 – Peter

+0

私はお詫び申し上げます。上記のあなたのXMLコメントが完全にうまくいっていることを意味するのか分かりません。 (コメント行は ''の行の下のどこかに現れることがありますが、私はそれが問題ではないとほとんど確信しています) –

答えて

2

Groovyのは、XMLを扱うのに最適な言語です。

Xmlで作業するのに役立つさまざまなクラスがあります。 groovy.xmlパッケージを見てください。

import groovy.xml.* 

def inputText = """<?xml version="1.0" encoding="UTF-8"?> 
<person> 
    <name>John</name> 
</person> 
""" 

def xml = new XmlSlurper().parseText(inputText) 

xml.name.replaceBody('Batman') 

def newXml = new StreamingMarkupBuilder().bind { 
    mkp.comment "Your comment" 
    mkp.yield xml 
} 
println XmlUtil.serialize(newXml) 
+0

答えをありがとう。私はまだ出力を少しフォーマットしたいと思っていました。その間に改行をいくつか追加するにはどうすればよいですか?私はmpk.yieldUnescaped( '\ n')と他のいくつかのものを試してみましたが、うまく動作しません。 – Peter

+0

XmlUtil.serialize(xml)は文字列を返します。あなたは文字列で何でもできます。たとえば、コメントの前後に改行記号を追加する:XmlUtil.serialize(newXml.toString())。replaceAll( ' - >'、 ' - > \ n \ n')。replaceAll( '<! - '、 '\ n \ n <! - ') –

関連する問題