如何解决使用groovy脚本或xslt删除xml版本和其他标签
我需要从XML中删除XML版本标签和根标签。为此,我编写了一个普通脚本。 但是它没有按预期工作。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:Response xmlns:ns1="urn:enoc.com:HTRUAE:EmployeeMasterData_Portal">
<Employee>
<EmployeeId>1234</EmployeeId>
</Employee>
</ns1:Response>
Groovy代码-responseOriginal
包含传入的XML:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.lang.Object;
import java.lang.String;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.text.ParsePosition;
Message processData(Message message) {
def properties = message.getProperties();
def responseOriginal = properties.get("RESPONSE");
String tempresponseTarget = responseOriginal.toString();
String responseTarget = "";
String bodyS = "<ns1:Response xmlns:ns1=\"urn:enoc.com:HTRUAE:EmployeeMasterData_Portal\">";
String bodyE = "</ns1:Response>";
responseTarget = tempresponseTarget.replaceAll("\\<\\?xml(.+?)\\?\\>","").replaceAll(bodyS,"").replaceAll(bodyE,"").trim();
message.setProperty("EMPRESPONSE",responseTarget);
return message;
}
有人可以检查脚本并提出更改建议吗? 另外,是否可以使用XSLT删除它?
解决方法
在Java的Saxon 9或10中使用XSLT 2或3即可使用
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="2.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="/*">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。