java - JAXB 更改服务器上的 XML 顺序,但不更改本地主机上的 XML 顺序

标签 java xml-parsing jaxb

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

相关文章:

java - Keycloak 身份代理 API

java - 使用字符串数组列表长度作为整数

java - 插入选择与批量插入

sql-server - SQL 插入中存在非法 xml 字符

java - @JsonRootName 无法正常工作

java - XSD 是否允许同时使用 simpleContent 和 complexContent?

java - Java 中的构造函数链会创建多个对象吗?

ios - 如何从 NSURLConnection 委托(delegate)发送多个 url 请求?

java - 无法从 STRING 单元格错误中获取 NUMERIC 值

java - 如何更改生成的 jaxb 类中的 targetName 空间