我是 groovy 的新手(有几周的经验)。目前我正在尝试.vcproj
使用 groovy 处理一些 Visual Studio 文件:替换一些路径,这些路径将由正则表达式模式找到。这对我来说很好。
要将更改写入文件,我使用
XmlUtil.serialize(slurper, writer)
方法,其中
def writer = new FileWriter(outputFile)
和
def slurper = new XmlSlurper(keepIgnorableWhitespace:true).parse(it)
这也可以正常工作,除了一件事。在原始vcproj
文件中,每个属性都在单独的行中,例如:
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="..\..\..\..\Test_Debug.vsprops"
CharacterSet="2"
>
但是在调用类的serialize()
方法之后XMLUtil
,整个输出存储在一行中:
<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 保持在每个属性之间?