我必须处理大型XML文档,这些文档通常会错误地处理缺少的属性数据。而不是仅仅遗漏缺少数据的属性,该属性用空字符串值指定。这会导致解组时出现问题,因为空字符串是的一个值。使用JAXB将空字符串解组为空的正确方法
例如,应该是什么
<SOME_ELEMENT attr1="someValue"/>
反而
<SOME_ELEMENT attr1="someValue" attr2="" attr3=""/>
我试图拿出适当地处理这个不好的XML的“正确”的方式。我们的目标是将属性的值视为空白字符串时省略,而空白字符串永远不会是该属性的有效值(例如整数)。
我目前使用XMLAdapters将这些空字符串转换为空(如建议in this post),但这似乎是错误的解决方案。我正在使用的文档中的许多属性已经使用了从其他代码共享的类型适配器,并且似乎没有为属性指定多个XMLAdapter的方法。
有没有一种标准的方法来处理我刚刚错过的这种类型的情况?
谢谢!
编辑
我在寻找,不需要我来编辑每个不同的JAXB的解决方案映射类,因为有几十个都具有相同的需求。理想情况下,这个问题的解决方案将允许我为所有属性指定一个通用策略,并根据需要允许特定的覆盖。
你想要什么样的行为?你想要绑定的栏值为零或空或空字符串,或其他完全? –
2012-04-10 14:37:22
还有什么问题http://stackoverflow.com/questions/5133250/jaxb-how-to-make-jaxb-not-to-unmarshal-empty-string-to-0?这是一个语义问题,而不是xml语法问题。 xml实际上是格式良好的。我这样说是因为这意味着它不会是一个优雅的技术解决方案,因为它是一个业务逻辑问题。 – 2012-04-10 14:40:32