Groovy 脚本将 xml 转换为 csv 保持空格不变

Groovy script to convert xml to csv keeping spaces intact

我正在尝试编写 groovy 脚本以将 xml 转换为 csv 文件。 输入 xml:

<Structure>
    <Header>
        <PlanNumber>123456</PlanNumber>
        <HeaderRec>ABC</HeaderRec>
        <Plan>1234</Plan>
        <Filler>                 </Filler>
        <CompanyName>Dummy</CompanyName>
    </Header>
    <Records>
        <Record1>
            <Field1>ABCD</Field1>
            <Field2>ABCD</Field2>
            <Field3>ABCD</Field3>
            <Field4>ABCD</Field4>
            <Field5>ABCD</Field5>
            <Filler>          </Filler> 
        </Record1>
        <Record2>
            <Field1>ABCD</Field1>
            <Field2>ABCD</Field2>
            <Filler>         </Filler>
            <Field4>ABCD</Field4>
            <Field5>ABCD</Field5>
            <Filler>          </Filler> 
        </Record2>      
    </Records>
</Structure>

我的 groovy 脚本:

def content = new XmlSlurper().parseText(input)
def header = content.Header.children().collect().join(' ')
    
def csv = content.Records.children().inject(header){result, row -> [result,row.children().collect().join(' ')].join("\n")}
println csv.toString()

这是我得到的输出:

123456 ABC 1234  Dummy
ABCD ABCD ABCD ABCD ABCD 
ABCD ABCD  ABCD ABCD 

脚本忽略了填充字段中的空格。我的要求是 xml 字段中的任何空格在 csv 中都应该是完整的。也就是说,如果该字段中有 7 个空格,则应在 csv 中保留相同的空格。到目前为止,空格被忽略了。 你能帮我么。我需要改变我的方法吗?

使用keepWhitespace:true。那应该可以解决它。

def content = new XmlSlurper(keepWhitespace:true).parseText(input)