我有一个以下格式的 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)时,我得到不同的排序,我无法理解为什么。
有人能解释一下吗?
最佳答案
默认JAXB (JSR-222)实现不定义顺序。这意味着 Java VM 之间的行为可能有所不同。有几个用于定义订单的选项。
选项 #1 - @XmlType(propOrder={"foo", "bar})
在类级别使用此注释允许您指定希望查看编码到 XML 的 XML 元素的顺序。
选项 #2 - @XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
您可以在类级别使用 @XmlAccessorOrder
注释来指定您希望查看按字母顺序编码到 XML 的 XML 元素。
关于java - JAXB 更改服务器上的 XML 顺序,但不更改本地主机上的 XML 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956077/