使用 groovy 脚本或 xslt 删除 xml 版本和其他标签
remove xml version and other tag using groovy script or xslt
我需要从 XML 中删除 XML 版本标签和根标签。为此,我编写了一个 groovy 脚本。
但是它没有按预期工作。
输入:
<?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 删除它?
将 XSLT 2 或 3 与 Saxon 9 或 10 一起用于 Java,您可以使用
<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>
我需要从 XML 中删除 XML 版本标签和根标签。为此,我编写了一个 groovy 脚本。 但是它没有按预期工作。
输入:
<?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 删除它?
将 XSLT 2 或 3 与 Saxon 9 或 10 一起用于 Java,您可以使用
<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>