我将转换器Java对象写到soap标头,但输出没有'ns'前缀
我的xml输出是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AuthHeader>
<UserName>sample</UserName>
<Password>sample_password</Password>
</AuthHeader>
但是肥皂头是这样的:(有“ ns”!)
<ns:AuthHeader>
<ns:UserName>sample</ns:UserName>
<ns:Password>sample_password</ns:Password>
</ns:AuthHeader>
我的代码是这样的:
AuthHeader authHeader = new AuthHeader();
authHeader.setUserName(endDureBean.getUserName());
authHeader.setPassword(endDureBean.getPassword());
//Create JAXB Context
JAXBContext jaxbContext = JAXBContext.newInstance(AuthHeader.class);
//Create Marshaller
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
//Required formatting??
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
//Print XML String to Console
StringWriter sw = new StringWriter();
//Write XML to StringWriter
jaxbMarshaller.marshal(authHeader, sw);
//Verify XML Content
String xmlContent = sw.toString();
答案 0 :(得分:0)
我找到了解决方案,我们应该在AuthHeader类中使用@XmlElement指定“ ns”:
@XmlElement(name = "UserName", namespace = "http:/10.10.10.10:8080/")
protected String userName;
@XmlElement(name = "Password", namespace = "http:/10.10.10.10:8080/")
protected String password;
xml文件是这样的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsample.org/soap/envelope/"
xmlns:ns="http:/10.10.10.10:8080/">
<soapenv:Header>
<ns:AuthHeader>
<!--Optional:-->
<ns:UserName>sample-username</ns:UserName>
<!--Optional:-->
<ns:Password>sample-password</ns:Password>
</ns:AuthHeader>
</soapenv:Header>