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>

XMLからデータを取得するためにJAXBを使用しています。

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 のように製品を 1 つずつ取得することです (id 1 よりも id 2 など)。しかし、Amazon サーバー (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 に答える