我有一个spring-ws端点,并使用jaxb(moxy提供程序)来解组。 如果名称空间与包含的名称空间相同,我想避免在类的所有字段上指定名称空间 课。
假设我要发送这个简单的xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:p="http://example.com/parents"
xmlns:c="http://example.com/children">
<soapenv:Header/>
<soapenv:Body>
<p:parent>
<c:child>
<c:field1>value1</c:field1>
<c:field2>value2</c:field2>
<c:field3>value3</c:field3>
</c:child>
</p:parent>
</soapenv:Body>
</soapenv:Envelope>
这些是我的域对象
@XmlRootElement(name="parent", namespace="http://example.com/parents")
public class Parent {
private Child child;
@XmlElement(namespace = "http://example.com/children")
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
}
@XmlType(namespace = "http://example.com/children")
public class Child {
private String field1;
private String field2;
private String field3;
@XmlElement(name = "field1", namespace = "http://example.com/children")
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
@XmlElement(name = "field3")
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field3 = field3;
}
}
我注意到field1设置为value1,但是field2和field3设置为null。 我本来希望XmlType上的名称空间或Parent的子字段上的名称空间是 足够。
我也尝试使用packge-info.java类
@XmlSchema(
namespace="http://example.com/parents",
xmlns={
@XmlNs(prefix="p", namespaceURI="http://example.com/parents"),
@XmlNs(prefix="c", namespaceURI="http://example.com/children")
},
elementFormDefault=XmlNsForm.UNQUALIFIED)
package com.example.domain;
我将其添加到field2
@XmlElement(name = "c:field2")
在将field1和field2设置为正确的值之后,但field3仍然为空。 感谢您的帮助。
版本:
spring.ws:3.0.4。释放
moxy:2.7.3