Java 使用Jackson-XmlMapper进行序列化

Java 使用Jackson-XmlMapper进行序列化,java,xml,jackson,jackson-dataformat-xml,Java,Xml,Jackson,Jackson Dataformat Xml,我正在尝试使用Jackson XmlMapper将对象序列化为xml字符串。我的目标是: @JacksonXmlRootElement(namespace = "http://www.w3.org/2001/XMLSchema", localName = "PersonRO") public class PersonInfo { @JacksonXmlProperty(localName = "PersonID") p

我正在尝试使用Jackson XmlMapper将对象序列化为xml字符串。我的目标是:

@JacksonXmlRootElement(namespace = "http://www.w3.org/2001/XMLSchema", localName = "PersonRO")
public class PersonInfo {

    @JacksonXmlProperty(localName = "PersonID")
    private String personId;

    @JacksonXmlProperty(localName = "ReturnCode")
    private Integer errorCode;

    // getters, setters
}
我需要在输出中实现以下xml:

        <PersonRO xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <PersonID>00000000000001</PersonID>
          <ReturnCode>150</ReturnCode>
        </PersonRO>

00000000000001
150
这项任务似乎很容易,但首先我在实现多个名称空间(xmlns:xsd,xmlns:xsi)方面遇到了问题,并且字段也有空名称空间,尽管我根本不需要它们

到目前为止,我的结果是:

<PersonRO xmlns="http://www.w3.org/2001/XMLSchema">
  <PersonID xmlns="">00000000000001</PersonID>
  <ReturnCode xmlns="">150</ReturnCode>
</PersonRO>

00000000000001
150
那么,如何使用Jackson XmlMapper获得与上述完全相同的结果呢? (我已经看到您可以配置XmlFactory等,但不能正确地进行配置…)


如果您需要任何澄清,请提前通知我并感谢您。

我找到了答案:

@JacksonXmlRootElement(localName = "PersonRO")
public class PersonInfo {

    @JacksonXmlProperty(isAttribute = true, localName = "xmlns:xsd")
    private final String xmlnsXsd = "http://www.w3.org/2001/XMLSchema";

    @JacksonXmlProperty(isAttribute = true, localName = "xmlns:xsi")
    private final String xmlnsXsi = "http://www.w3.org/2001/XMLSchema-instance";


    @JacksonXmlProperty(localName = "PersonID")
    private String personId;

    @JacksonXmlProperty(localName = "ReturnCode")
    private Integer errorCode;

    // getters, setters
}