gpt4 book ai didi

java - 如何在解码之前了解架构

转载 作者:行者123 更新时间:2023-11-30 05:04:15 25 4
gpt4 key购买 nike

场景:

我正在尝试重构代码,该代码要求用户选择一个 xml 文件,该文件假定遵守 2 个给定模式中的任何一个。现在,代码正在尝试使用 Schema A Unmarshaller 对其进行解码。如果失败,它会尝试使用 Schema B Unmarshaller 对其进行解码。如果两者都失败,它将通过向用户显示正确的消息来拒绝文件。

问题:

这里的程序流程取决于unmarshal()抛出的Exception

问题:

有没有办法知道我们应该尝试使用哪个unmarshaller来解析文件,以便我们立即使用正确的unmarshaller?此外,这还可以帮助我们拒绝所有不相关的 XML 文件,这些文件不符合任一架构。

最佳答案

有几种不同的选项:

选项 #1 - 在多个域模型上创建 JAXBContext

如果两个模式的模型兼容(完全独立,或者共享以相同方式注释的类型),则只需在所有域对象上创建 JAXBContext,而不是每个模式一个。

选项 #2 - StAX 输入

如果具有不同的 XML 模式意味着具有不同的根元素,我将创建一个 StAX XMLStreamReader 查看根元素,然后选择要使用的编码器。然后解码该 XMLStreamReader。

选项 #3 - 首先验证 XML 文档

您可以使用 javax.xml.validation API 首先验证文档,然后根据结果选择解码器。

关于java - 如何在解码之前了解架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5658464/

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