1
解組下面的XML時,我有一個問題前綴:JAXB命名空間和
<p456:doServiceResponse xmlns:p456="http://www.sign.services.org/IServicios/">
<respuesta>0</respuesta>
<respuesta>Operacion correcta</respuesta>
<respuesta>respuesta</respuesta>
</p456:doServiceResponse>
我有下面的類:
package com.ws.client;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "respuesta" })
@XmlRootElement(name = "doServiceResponse")
public class DoServiceResponse {
@XmlElement(required = true)
protected List<String> respuesta;
public List<String> getRespuesta() {
if (respuesta == null) {
respuesta = new ArrayList<String>();
}
return this.respuesta;
}
}
和包信息文件:
@XmlSchema(
namespace = "http://www.sign.services.org/IServicios/",
elementFormDefault = XmlNsForm.QUALIFIED)
package com.ws.client;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
該XML的反編組不會失敗,但respuesta
字段爲null
。如果我將p456
作爲前綴添加到所有<respuesta>
節點,那麼它工作。事情是我不能這樣做,因爲這是我從WS調用收到的答案,不可修改。
此外,爲了不破壞任何東西,我會發布的 「請求」 該WS,這是工作的罰款,到目前爲止:
<doServiceRequest xmlns="http://www.sign.services.org/IServicios/">
<aplicacion>app</aplicacion>
<params>param1</params>
<params>param2</params>
</doServiceRequest>
和bean:
package com.ws.client;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "aplicacion", "params" })
@XmlRootElement(name = "doServiceRequest")
public class DoServiceRequest {
@XmlElement(required = true)
protected String aplicacion;
@XmlElement(required = true)
protected List<String> params;
public String getAplicacion() {
return aplicacion;
}
public void setAplicacion(String value) {
this.aplicacion = value;
}
public List<String> getParams() {
if (params == null) {
params = new ArrayList<String>();
}
return this.params;
}
}
能
人請告訴我如何配置註釋,這樣我就可以在不修改它們的情況下解組這兩個XML,也不需要觸摸JAXB解組器?這可能嗎?
我想這是因爲你有'xmlns:p456 =「http://www.sign.services.org/IServicios/」'作爲命名空間。如果你的命名空間像'xmlns:「那麼它將工作在沒有'p456'的情況下。」http://www.sign.services.org/IServicios/「 – user2004685
@ user2004685你的意思是在第一個XML上,doServiceResponse?這就是WS如何返回響應,所以我不能修改它。 – carcaret
您是否使用同一組架構的雙方?我的意思是要求以及迴應? – user2004685