如何到处避免XmlElement上的命名空间

时间:2018-10-10 10:09:03

标签: jaxb spring-ws moxy

我有一个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

0 个答案:

没有答案