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