在 Apache Axis 1.4 中忽略意外元素的任何解决方法?
这个问题在2012年Apache Axis 2的“Apache AXIS在解析时忽略/跳过其他元素”之前被问到。安讯士 1.4 尚无解决方法吗?
问题定义
例如;
1-我们在开发时的 wsdl 中有一个 soap 响应定义('ResponseGetCustomerInfo'):
...
<xs:element name="ResponseGetCustomerInfo">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:CustomerID"/>
<xs:element ref="ns1:CustomerUsername"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CustomerID" type="xs:integer"/>
<xs:element name="CustomerUsername" type="xs:string"/>
...
2-很高兴看到当我们得到这样的响应是可解析的:
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ResponseGetCustomerInfo xmlns="http://tempUri.org/">
<CustomerID>1</CustomerID>
<CustomerUsername>raki</CustomerUsername>
</ResponseGetCustomerInfo>
</soap:Body>
</soap:Envelope>
3-一段时间后,我们的服务提供商更改了服务响应,并在响应中添加了新的输出字段,我们不知道何时或为什么;
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ResponseGetCustomerInfo xmlns="http://tempUri.org/">
<CustomerID>1</CustomerID>
<CustomerUsername>raki</CustomerUsername>
<CustomerName>Raki</CustomerName>
<CustomerSurname>Bandao</CustomerSurname>
</ResponseGetCustomerInfo>
</soap:Body>
</soap:Envelope>
4-新响应理论上与旧版本兼容,因为没有字段既没有删除也没有更改。但安讯士无法解析响应:
"SAXException: Invalid Element ... "
我不想更新 wsdl 并再次重新生成 Web 服务客户端。那么,有没有办法跳过响应中的“意外[新添加]元素”?或任何解决方法?
我正在尝试许多方法,但尚未找到任何解决方案。