我试图使用JAXB
库转换Pojo to XML
。使用JAXB从XML创建POJO
我需要的最终结果是这个样子:
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<!--other stuff-->
</soap:Body>
</soap:Envelope>
我已经尝试了几种不同的方法,但到目前为止,我没有成功,这是我的最新尝试。
@XmlRootElement(name = "soap:Envelope")
public class Envelope {
private SoapBody soapBody;
public String toString() {
return "ClassPojo [SoapBody = " + soapBody + "]";
}
public SoapBody getSoapBody() {
return soapBody;
}
@XmlElement(name = "soap:Body")
public void setSoapBody(SoapBody soapBody) {
this.soapBody = soapBody;
}
}
这个转换得到以下结果(但它缺少XMLNS
线):
<soap:Envelope>
<soap:Body>
<!--Other stuff-->
</soap:Body>
</soap:Envelope>
我已经尝试添加一个命名空间标签声明:
@XmlRootElement(name = "soap:Envelope", namespace = "soap")
但它只是将行转换为此<ns2:soap:Envelope xmlns:ns2="soap">
编辑:
OutputStream os = connection.getOutputStream();
JAXBContext jaxbContext =
JAXBContext.newInstance(MyOtherStuffObject.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(myObject, os);
os.flush();
soap命名空间是否必须是显式的?对于大多数解析器,应该等同于。 –