我的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本身有一种自动完成此操作的方法,我会很高兴。
谢谢,SGB
发布于 2010-05-22 02:44:09
我认为您必须编辑您的大型机代码以获得最佳解决方案。当您的大型机生成XML时,您必须告诉它,如果XML为空,就不要输出标记。
我不认为你可以在客户端做太多的事情。如果您得到的XML中充满了空标记,那么您别无选择,只能全部解析它们--毕竟,如果不以某种方式解析标记,您如何判断它是否为空!
但也许您可以在JAX-B到达之前对XML文本执行正则表达式字符串替换:
String xml = //get the XML
xml = xml.replaceAll("<.*?/>", "");这将删除像"“这样的空标签,但不会删除"”。
https://stackoverflow.com/questions/2884249
复制相似问题