0

シナリオ

既存のXMLファイルのいくつかの属性を更新する必要があります。ファイルにはXSL処理命令が含まれているため、XMLを解析および更新するときに、ファイルに再度書き込む前に命令を追加する必要があります。問題は-私が何をしても-処理命令を挿入できないことです

rgagnon.comにあるJavaの例に基づいて、以下のコードを作成しました

サンプルコード##

import groovy.xml.*

def xml = '''|<something>
            |  <Settings>
            |  </Settings>
            |</something>'''.stripMargin()

def document = DOMBuilder.parse( new StringReader( xml ) )
def pi = document.createProcessingInstruction('xml-stylesheet', 'type="text/xsl"    href="Bp8DefaultView.xsl"');
document.insertBefore(pi, document.documentElement) 

println document.documentElement

出力を作成します

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

欲しいもの

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Bp8DefaultView.xsl"?>
<something>
  <Settings>
  </Settings>
</something>
4

1 に答える 1

1

の前にPIを挿入しますdocumentElementが、その後、要素のみをに渡しprintlnます。全体を印刷しても機能しますdocumentか?

それができない場合、DOMドキュメントを出力する「公式」の方法はLSSerializer

def ser = document.implementation.createLSSerializer()
new File("output.xml").withOutputStream { o ->
  def lso = document.implementation.createLSOutput()
  lso.byteStream = o
  ser.write(document, lso)
}
于 2012-12-08T20:39:50.523 に答える