xml - 将java对象转换为soap头
问题描述
我将转换器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();
解决方案
我找到了我们应该在 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>
推荐阅读
- php - 无法创建缓存目录.. 或目录不可写。在 RainTPL 中不使用缓存继续
- javascript - Web 组件如何为其子组件设置值?
- javascript - 使用自定义下拉菜单在移动设备上滚动非常麻烦
- amazon-ec2 - 如何在不丢失任何配置的情况下将实例移动到另一个区域?
- python - 确定 pca 分析中 n_components 变量的值
- json - 将json读入django错误
- git - Bitbucket 垃圾收集过程会降低服务器性能
- security - 私钥如何安全分发?
- sql - 如何加快这个 SQL 查询?
- python - TensorFlow 1.6 中的 SSD_MOBILENET V1 到 TensorRT