【发布时间】:2015-11-30 13:06:02
【问题描述】:
我是 groovy 的新手(几周的经验)。目前我正在尝试使用 groovy 处理一些 Visual Studio .vcproj 文件:替换一些路径,这些路径将由正则表达式模式找到。这对我来说很好。
要将更改写入文件,我使用的是
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"
>
但是在调用XMLUtil类的serialize()方法后,整个输出就存放在一行中了:
<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 保持在每个属性之间?
【问题讨论】:
标签: serialization groovy xmlslurper html-xml-utils