java - 如何删除输入xml中的空标签

标签 java xml jaxb

我的 java 模块从大型机获取大量输入 xml。不幸的是,大型机无法跳过可选元素,结果我在输入中得到了很多空标签:

所以,

<SSN>111111111</SSN>
<Employment>
<Current>
<Address>
<line1/>
<line2/>
<line3/>
<city/>
<state/>
<country/>
</Address>
<Phone>
<phonenumber/>
<countryCode/>
</Phone>
</Current>
<Previous>
<Address>
<line1/>
<line2/>
<line3/>
<city/>
<state/>
<country/>    
</Address>
<Phone>
<phonenumber/>
<countryCode/>
</Phone>
</Previous>
</Employment>
<MaritalStatus>Single</MaritalStatus>

应该是:

<SSN>111111111</SSN>
<MaritalStatus>SINGLE</MaritalStatus>

我使用 jaxb 解码大型机发送给它的输入 xml 字符串。是否有一种干净/简单的方法来删除所有空组标签,或者我是否必须在每个元素的代码中手动执行此操作。我的输入 xml 中有超过 350 个元素,所以如果 jaxb 本身有一种自动执行此操作的方法,我会很高兴吗?

谢谢, 国标

最佳答案

您可以使用 XSLT 进行预处理。我知道它现在被认为有点“迪斯科”,但它应用起来又快又容易。

从这里tek-tips讨论,您可以使用 XSLT 进行转换以删除空元素。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="@*|node()">
    <xsl:if test=". != '' or ./@* != ''">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

关于java - 如何删除输入xml中的空标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884249/

相关文章:

java - Moxy 的 getValueByXPath 为除根元素以外的所有元素返回 null

java - hibernate 查询

java - NoSuchElementException : next on empty iterator in MapPartitionsToPair-Spark

python - 用 Python 加密 SOAP 信封

java - 如何以编程方式从 Java 创建 XML?

xml - WIX 安装程序 : Cannot set more than one appSettings node

java - 如果命名空间声明在 SOAP 信封上,如何使用 JAXB 解码 SOAP 响应?

java - 商标 (™) 符号显示为 ?在使用 JAXB 编码过程中?

java - 编辑 CSV 文件(设计实现)

java - 泛型和 "where"子句