2

我在 WAS7.0 应用服务器下使用 JAX-WS 2.1(使用 JAXB 2.1)。我已经编写了一个客户端代码,下面是我的请求 xml 中的片段。

      <additionalCriteria>
         <ns5:keyword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
         <ns5:maxResultsToReturn>10</ns5:maxResultsToReturn>
         <ns5:nextResultBlockKey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
         <ns5:scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
         <ns5:sortBy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
         <ns5:sortOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      </additionalCriteria>

如您所见,该属性xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"被添加到每个元素中。我不想在我的请求中这样做。任何人都可以建议,因为它阻止了我的项目交付?

4

1 回答 1

0

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"如果在消息的深处有任何具有空值的可空字段,则这是必需的。JAX-B 规范要求这些用 xsi:nil 表示。JAX-WS/JAX-B 无法预测是否存在这些,因为它在遍历树时流出 XML。所以它总是添加那个命名空间。这是标准的,正常的,任何反对的人都需要重新考虑。

于 2012-12-25T18:47:33.423 回答