【发布时间】:2011-10-17 06:03:06
【问题描述】:
我正在使用 Spring WebServiceTemplate 进行 Web 服务调用,该调用使用 JAXB 生成请求 XML。我的要求需要所有元素(包括根)在 SOAP 请求中都有一个命名空间前缀(只有一个命名空间)。
例如:
<ns1:Login xmlns:ns1="www.example.com/a">
<ns1:username>abc</ns1:username>
<ns1:password>abc</ns1:password>
</ns1:Login>
但我得到了
<Login xmlns="www.example.com/a">
<username>abc<username>
<password>abc<password>
</Login>
xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="www.example.com/a" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ilreq="www.example.com/a" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="Login">
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
从 XSD 生成的 Java 类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Login", propOrder = {
"username",
"password"
})
@XmlRootElement
public class Login {
@XmlElement(required = true)
protected String username;
@XmlElement(required = true)
protected String password;
......
}
包信息.java
@javax.xml.bind.annotation.XmlSchema(
namespace = "www.example.com/a",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package authenticator.beans.login;
想知道如何为包括根在内的所有元素生成带有命名空间前缀的请求 XML。
【问题讨论】:
-
如果我错了,请纠正我,但开头的这两个 XML sn-ps 不是等效的吗?
-
@TomasZ :XML 是等效的,但服务器不接受没有命名空间前缀的请求。所以我想给所有元素加上前缀。
-
相关问题? JAXB namespaces missing
-
@perp :感谢您的链接。能够生成所需格式的 XML。
-
@MSK 请按照meta.stackexchange.com/questions/38149/…中给出的指南“关闭”这个问题