gpt4 book ai didi

java - 根据运行时加载的 xml 模式序列化 java 对象

转载 作者:行者123 更新时间:2023-11-30 07:37:55 25 4
gpt4 key购买 nike

如果 XML 文档的结构如下所示,我将其称为三层:根元素包含一些容器元素(我将它们称为实体),它们中的每一个都包含一些 simpleType 元素(我称它们为 properties)。类似的东西:

<data>
<spaceship>
<number>1024</number>
<name>KTHX</name>
</spaceship>
<spaceship>
<number>1624</number>
<name>LEXX</name>
</spaceship>
<knife>
<length>10</length>
</knife>
</data>

哪里spaceship是一个实体,number是一个属性。

我的问题如下:

给定

schema : 描述三层文档的任意 xsd 文件,在运行时加载。 xmlDocument : 符合 schema 的 xml 文档.

创建

A Map<String, Map <String, Object>>包含来自 xmlDocument 的数据,其中第一个键对应于实体,第二个键对应于该实体的属性,值对应于该属性的值,在将其转换为适当的 java 类型后(例如,如果模式将属性值设置为 xs:int ,那么它应该转换为 Integer )。

使用现有库实现此结果的最简单方法是什么?

P. S.JAXB 在这里并不是真正的选择。架构在编译时可能是任意的和未知的。我还希望避免过度使用反射(与将 bean 转换为映射相关)。我正在寻找可以让我在解析 xml 时进行类型转换的东西。

最佳答案

我认为XMLBeans值得一试;不止一次挽救了这一天......

基本上,您运行一个 ant 脚本来生成处理模式的 bean,然后迭代节点以构建您的 map 。

关于java - 根据运行时加载的 xml 模式序列化 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324641/

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