【发布时间】:2010-02-24 08:42:31
【问题描述】:
如果 XML 文档的结构如下所示,我将其称为 三层:根元素包含一些容器元素(我将它们称为 entities),它们每个内部都有一些 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文档。
创建
一个 Map<String, Map <String, Object>> 包含来自 xmlDocument 的数据,其中第一个键对应于实体,第二个键对应于该实体的属性,值对应于该属性的值,在将其转换为适当的 java 类型(例如,如果架构将属性值设置为xs:int,则应将其强制转换为Integer)。
使用现有库实现此结果的最简单方法是什么?
P。 S。 JAXB 在这里并不是一个真正的选择。架构在编译时可能是任意且未知的。我还希望避免过度使用反射(与将 bean 转换为映射相关)。我正在寻找可以让我在解析 xml 时进行类型转换的东西。
【问题讨论】:
标签: java xml xml-serialization xsd