gpt4 book ai didi

java - 规定 JAXB 中只允许一个元素的一个实例?

转载 作者:行者123 更新时间:2023-12-01 11:19:47 26 4
gpt4 key购买 nike

我正在将一些 XML 传递给 RESTful Web 服务:

<root>
<element1/>
<element2/>
<element3/>
</root>

Web 服务将解码该 XML,并且我想确保该 XML 有效。

我使用架构来创建 Java 对象,在此架构中 element1 有一个 maxOccurs=1 属性,但这对创建的 Java 对象没有影响(与添加 minOccurs=1 不同,这将导致 "required=true" 添加到 @XMLElement 注释中)。解码传递给 Web 服务的 XML 时,如果只应出现一次的元素出现多次,则将解析该元素的最后一个实例。我不希望这种情况发生,因为我希望能够提醒客户端他们发送的 XML 无效,并且他们应该删除任何不适用的元素 - 而不仅仅是任意接受最后一个元素。我相信这将涉及在解码之前进行一些预验证 - 并且我也许可以使用 beforeUnmarshal 方法。

经过一些研究后,我了解到没有 JAXB 注释允许我指定 element1 只能存在一次。是这样吗?是否可以在没有模式的情况下验证这一点?

最佳答案

我通过允许 Java 对象中元素的多个实例解决了这个问题:

@XmlElement(name = "element1", required = true)
private List<element1> element1;

这将允许我在 afterUnmarshal 方法中检查列表的大小,如果列表的大小大于 1,我可以抛出一个新的 ValidationException

关于java - 规定 JAXB 中只允许一个元素的一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31384839/

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