2

我有以下格式的 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>

我的问题是,在本地主机上,我像在 XML 中一样获得产品(id 1 比 id 2 等)但是当我将它上传到我的亚马逊服务器(linux)时,我得到不同的排序,我不明白为什么。

有人有解释吗?

4

1 回答 1

2

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

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

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

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

您可以@XmlAccessorOrder在类级别使用注释来指定您希望查看按字母顺序编组为 XML 的 XML 元素。

于 2012-12-19T17:39:03.530 回答