首页 > 解决方案 > Groovy XmlSlurper 将 " 添加到所有值

问题描述

我想使用 Groovy XmlSlurper 在 XML 的所有字段值的开头和结尾添加“,如下所示。


<SAPEmployeeData>
   <record>
      <COMPANY>060</COMPANY>
      <VENDOR>E010013787</VENDOR>
      <EMPLID>10013787</EMPLID>
      <EFFECT_DATE>20180401</EFFECT_DATE>
      <LAST_NAME>GONZALEZ-VARELA</LAST_NAME>
   </record>
   <record>
      <COMPANY>060</COMPANY>
      <VENDOR>E010013788</VENDOR>
      <EMPLID>10013788</EMPLID>
      <EFFECT_DATE>20140101</EFFECT_DATE>
      <LAST_NAME>CARDOZO</LAST_NAME>
   </record>
</SAPEmployeeData>

->

<SAPEmployeeData>
   <record>
      <COMPANY>"060"</COMPANY>
      <VENDOR>"E010013787"</VENDOR>
      <EMPLID>"10013787"</EMPLID>
      <EFFECT_DATE>"20180401"</EFFECT_DATE>
      <LAST_NAME>"GONZALEZ-VARELA"</LAST_NAME>
   </record>
   <record>
      <COMPANY>"060"</COMPANY>
      <VENDOR>"E010013788"</VENDOR>
      <EMPLID>"10013788"</EMPLID>
      <EFFECT_DATE>"20140101"</EFFECT_DATE>
      <LAST_NAME>"CARDOZO"</LAST_NAME>
   </record>
</SAPEmployeeData>

我认为代码将是这样的。但我不知道在 replaceNode 部分写什么。有人能帮助我吗?

def Message processData(Message message) {

//Body 
def body = message.getBody(java.lang.String) as String;
def xmlString = new XmlSlurper().parseText(body)
    // filter on date

def items = xmlString.record.replaceNode{ something in this }

// Create output body
def newbody = new StreamingMarkupBuilder().bind {mkp.yield xmlString}.toString()
message.setBody(newbody)

return message;
}

标签: xmlgroovyxmlslurper

解决方案


尝试这个:

xmlString.children().each{ record->
record.childNodes().each{ 
  it.replaceBody("\"${it.text()}\"")
 }
}

推荐阅读