私はgroovyを初めて使用しています(数週間の経験)。現在、groovy を使用していくつかのビジュアル スタジオ ファイルを処理しようとして.vcproj
います。正規表現パターンによって検出されるいくつかのパスを置き換えます。これは私にとってはうまくいきます。
ファイルに変更を書き込むために、私は
XmlUtil.serialize(slurper, writer)
メソッド、ここで
def writer = new FileWriter(outputFile)
と
def slurper = new XmlSlurper(keepIgnorableWhitespace:true).parse(it)
これも、1 つのことを除いて正常に動作します。元のvcproj
ファイルでは、各属性は次のように別々の行にあります。
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="..\..\..\..\Test_Debug.vsprops"
CharacterSet="2"
>
serialize()
ただし、クラスのメソッドを呼び出した後、XMLUtil
出力全体が 1 行に格納されます。
<Configurations>
<Configuration Name="Debug|Win32" InheritedPropertySheets="..\..\..\..\Test_Debug.vsprops" OutputDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" CharacterSet="2">
XMS パーサーの場合、これは問題にならないはずですが、後処理で一部の perl スクリプトがこのvcproj
ファイルを使用し、属性行内に CR/LF がないと文句を言います。
XMLslurper
各属性の間に CR/LF を保持するように、または serialize-class を構成する簡単な可能性はありますか?