2

我目前正在开发一个使用 web 服务 (SOAP 1.2) 的应用程序。我很想知道我是否可以依赖 xmlschema 序列中无界元素的顺序。这是我在使用的 wsdl 中对该序列的定义。

<xsd:complexType name="IdList">
  <xsd:sequence>
    <xsd:element maxOccurs="unbounded" minOccurs="0" name="id" type="xsd:integer"/>
  </xsd:sequence>
</xsd:complexType>

这是否给了我对元素顺序的任何保证?假设这是相关肥皂消息的摘录:

<web:globalRecipientIds>
  <!--Zero or more repetitions:-->
  <web:id>1</web:id>
  <web:id>15</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

这是否意味着接收端将按照它在 SOAP 消息中出现的顺序来处理它?这是否取决于接收端的实现?如果是这样,我使用 apache 轴的 wsdl2java 生成接收端,以从 wsdl 文件生成 java 代码。你能告诉我一些具体的事情吗?

4

1 回答 1

2

XML 元素的顺序是有意义的——不管模式如何——例如

<web:globalRecipientIds>
  <web:id>1</web:id>
  <web:id>15</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

<web:globalRecipientIds>
  <web:id>15</web:id>
  <web:id>1</web:id>
  <web:id>7</web:id>
</web:globalRecipientIds>

是两种不同的 XML,并且 XML 工具(应该)保存和识别元素的顺序。

话虽如此,但这并不能保证“接收端将按照它在 SOAP 消息中出现的顺序对其进行处理”——这取决于接收端对 XML 的处理方式。它接收一个有序的 id 列表,但如果(例如)将这些 id 放入字典或其他一些散列结构中,则顺序丢失。

于 2013-05-03T14:22:56.173 回答