我有以下格式的XML:

<products>
     <product>
          <id>1</id>
          <name>a</name>
          <price>24.5</price>
     </product>
     <product>
          <id>2</id>
          <name>b</name>
          <price>3.75</price>
     </product>
     .
     .
     .
</products>


我正在使用JAXB从XML中获取数据。

这就是xsd的样子:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="products">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="product"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="product">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="id"/>
        <xs:element ref="name"/>
        <xs:element ref="price"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="id" type="xs:integer"/>
  <xs:element name="name" type="xs:NCName"/>
  <xs:element name="price" type="xs:decimal"/>
</xs:schema>


我的问题是在localhost上我像XML中一样逐一获得产品(id 1而不是id 2等)。但是当我将其上传到我的Amazon服务器(linux)时,我得到了不同的订购,我不明白为什么。

有人有解释吗?

最佳答案

默认情况下,JAXB (JSR-222)实现不定义顺序。这意味着Java VM之间的行为可能有所不同。有两个定义订单的选项。

选项#1-@XmlType(propOrder={"foo", "bar})

在类级别使用此批注允许您指定要查看已编组为XML的XML元素的顺序。

选项#2-@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)

您可以在类级别使用@XmlAccessorOrder批注指定您要查看按字母顺序编组到XML的XML元素。

10-06 07:21
查看更多