gpt4 book ai didi

java - 在生成的代码中,如何访问 XSD 文件中声明的方面?

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:13 26 4
gpt4 key购买 nike

我认为这将是一个简单的问题,结果却是一个令人头疼的问题。

我目前正在使用 JAXB 2 从我无法控制的 XSD 生成代码。我需要访问模式中的约束,以便在这些对象中设置值时应用一些逻辑和保护代码。批量验证根本行不通。在大多数情况下,我可以简单地截断字符串,一切都会好起来的。为此,我需要获取在 XSD 中声明的长度,以便将其应用到保护代码中并使该层保持通用。另一种方法是复制和硬编码长度,但坦率地说,如果有更好的方法来做到这一点,我将非常感激。

我在这里说的是字符串长度,但这适用于 XSD 中可声明的所有方面。

欢迎提出建议、代码示例和链接,基本上任何可以帮助我不对类中的数据进行硬编码的东西。

谢谢

最佳答案

我遇到了类似的问题,我找到的最佳解决方案是编写自己的 XJC 插件。 XJC 插件可以访问 XML 模式和生成的类,因此它似乎是获取限制信息的最简单方法。我的插件向生成的类中的任何字段添加了注释,这些字段在模式中应用了限制。例如,像这样的元素

<xs:element name="text">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>

会显示为

@XmlRestrictions(maxLength = 20)
protected String text;

在生成的类文件中。然后,您可以使用反射从字段中提取限制信息。

创建插件的文档不是很好,但我找到了这个 article有用。查看 Default Value Plugin 的源代码了解如何深入了解 XJC 的内存中 XML 模式表示和生成的类结构。 JAXB , XSOM , 和 CodeModel API 也会有所帮助。

关于java - 在生成的代码中,如何访问 XSD 文件中声明的方面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871815/

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