gpt4 book ai didi

xml - 使用 JAXB 将空字符串解码为 null 的正确方法

转载 作者:数据小太阳 更新时间:2023-10-29 02:14:10 24 4
gpt4 key购买 nike

我必须处理大型 XML 文档,这些文档通常会错误地处理缺失的属性数据。不是仅仅省略带有缺失数据的属性,而是用空字符串值指定该属性。这会在解码时导致问题,因为空字符串一个值。

例如,应该是什么

<SOME_ELEMENT attr1="someValue"/>

是代替

<SOME_ELEMENT attr1="someValue" attr2="" attr3=""/>

我正在努力想出一种“正确”的方式来优雅地处理这种格式不良的 XML。目标是当属性的值为空字符串时将属性视为被省略,而空字符串永远不是该属性的有效值(例如整数)。

我目前正在使用 XMLAdapters 将这些空字符串转换为 null(如建议的 in this post ),但这似乎是错误的解决方案。我正在处理的文档中的许多属性已经在使用从其他代码共享的类型适配器,而且似乎没有办法为一个属性指定多个 XMLAdapter。

是否有一种标准的方法来处理我刚刚错过的这种情况?

谢谢!

编辑

我正在寻找一种不需要我编辑每个不同的 JAXB 映射类的解决方案,因为有几十个都具有相同的需求。理想情况下,这个问题的解决方案将允许我为所有属性指定一个通用策略,并允许在必要时进行特定的覆盖。

最佳答案

我认为您想要遵循的模式是这篇文章中的模式: Customizing error handling of JAXB unmarshall process

对于一个元素,XML 可以指定它为空(如下所示)。对于字符串类型,空元素和属性(有时缺少元素)可以解释为空字符串。因此,您必须将您的逻辑视为业务逻辑,由 afterUnmarshal 事件处理。

<foo xsi:nil="true" />

关于xml - 使用 JAXB 将空字符串解码为 null 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com