在 Java 中使用 JAXB 从 XML 反序列化 HashMap

问题描述 投票:0回答:1

这是我的 XML 内容: 我自己做了,所以我可以改变它,只是发现这个结构适合我的数据。

<root>
    <someProperty>prop</someProperty>
    <myObject>
        <someProperty2>prop2</someProperty3>
        <someProperty3>prop3</someProperty3>
        <mapping>
            <entry>
                <key>key1</key>
                <value>value1</value>
            </entry>
            <entry>
                <key>key2</key>
                <value>value2</value>
            </entry>
        </mapping>
    </myObject>
    <myObject>
        <someProperty2>prop2</someProperty3>
        <someProperty3>prop3</someProperty3>
        <mapping>
            <entry>
                <key>key3</key>
                <value>value3</value>
            </entry>
        </mapping>
    </myObject>
</root>

我想在java类方面实现的是这样的:

Class 1:

class Root {
   String someProperty;
   List<MyObject> myObjects;
}

Class 2:

class MyObject {
   String someProperty2;
   String someProperty3;
   Map<String, String> mapping;
}

我有点努力为我的 XML 创建 XSD 架构以正确执行反序列化。 基本上我认为我需要一个正确的 XSD 模式,以便 JAXB 可以正确生成 Java 类。 那么您能否为给定的 XML 提供正确的 XSD 架构示例?

java xml xsd jaxb
1个回答
0
投票

有很多工具可以从给定的 XML 创建 XSD(例如,Oxygen 中有一个),但我不会那样做;这是一个过于复杂的解决方案。如今,一种更简单的方法是将 XML 转换为 JSON,然后从 Java 代码访问 JSON。或者使用 XSLT 3.0,您可以绕过 JSON 并将 XML 转换为可以直接从 Java 访问的映射和数组。

© www.soinside.com 2019 - 2024. All rights reserved.