使用JAXB将Java通用对象转换为XML

时间:2016-05-08 09:24:04

标签: java xml jaxb

我想要XML负载,例如:

<ResponseDto>
    <ResponseHeader>
        <success>true</success>
    </ResponseHeader>
    <ResponseBody>
        <ObjectA>
        </ObjectA>
    </ResponseBody>
</ResponseDto>

和另一个有效载荷如:

<ResponseDto>
    <ResponseHeader>
        <success>true</success>
    </ResponseHeader>
    <ResponseBody>
        <ObjectB>
        </ObjectB>
    </ResponseBody>
</ResponseDto>

所以我想为ResponseDto创建一个包含ResponseHeader Objectgeneric Java Object的类,我可以在其中放置不同类型的对象,所以我在一个单独的对象中尝试了多种类型的对象使用@XMLElement(name = "ResponseBody")的课程,但它不允许我使用XMLElements

的相同名称

在这种情况下我该怎么办? 提前谢谢。

1 个答案:

答案 0 :(得分:4)

大多数企业应用程序都使用JAXB。你可以在下面找到一些教程。

  1. http://www.mkyong.com/java/jaxb-hello-world-example/
  2. https://examples.javacodegeeks.com/core-java/xml/bind/jaxb-marshal-example/
  3. https://www.javacodegeeks.com/2014/12/jaxb-tutorial-xml-binding.html
  4. 步骤1:首先,您需要制作xsd文件。有许多在线网站可以生成xsd。立即使用http://xmlgrid.net/xml2xsd.html。 XSD看起来应该是这样的。

    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="ResponseDto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ResponseHeader">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="xs:string" name="success"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="ResponseBody">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="xs:string" name="ObjectA" minOccurs="0"/>
                  <xs:element type="xs:string" name="ObjectB" minOccurs="0"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    请参阅我的以下帖子以供参考。 read and get xml values in java