使用 Jackson XmlMapper 进行序列化
Serialization with Jackson XmlMapper
我正在尝试使用 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>
这个任务看起来很简单,但首先我在实现多个命名空间时遇到了问题(xmlns:xsd, xmlns:xsi),并且字段的命名空间为空,虽然我根本不需要它们。
到目前为止我的结果是:
<PersonRO xmlns="http://www.w3.org/2001/XMLSchema">
<PersonID xmlns="">00000000000001</PersonID>
<ReturnCode xmlns="">150</ReturnCode>
</PersonRO>
那么,如何使用 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
}
我正在尝试使用 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>
这个任务看起来很简单,但首先我在实现多个命名空间时遇到了问题(xmlns:xsd, xmlns:xsi),并且字段的命名空间为空,虽然我根本不需要它们。
到目前为止我的结果是:
<PersonRO xmlns="http://www.w3.org/2001/XMLSchema">
<PersonID xmlns="">00000000000001</PersonID>
<ReturnCode xmlns="">150</ReturnCode>
</PersonRO>
那么,如何使用 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
}