java - Jackson:将 XML 中的自定义属性反序列化为 POJO

标签 java xml jackson deserialization pojo

我想按名称属性反序列化并映射到以下值的类。 这是我的 XML 文件的一部分。

                <custom-attributes>
                    <custom-attribute name="Name1" dt:dt="string">VALUE</custom-attribute>
                    <custom-attribute name="Name2" dt:dt="string"> 
                        <value>1111</value>
                        <value>1111</value>
                        <value>1111</value>
                    </custom-attribute>
                    <custom-attribute name="Name3" dt:dt="string">VALUE2</custom-attribute>
                    <custom-attribute dt:dt="boolean" name="Name3">VALUE3</custom-attribute> 
                    <custom-attribute dt:dt="boolean" name="Name4">VALUE4</custom-attribute>
                </custom-attributes>

这是我的 pojo 类的一部分

@JsonIgnoreProperties(ignoreUnknown = true)
public class CustomAttributes {

     @JacksonXmlProperty(localName="name3", isAttribute = true)
     private String roleID;

     public String getRoleID() {
           return roleID;
      }

     public void setRoleID(String roleID) {
          this.roleID = roleID;
}

}

您知道如何通过名称正确读取这些属性的值吗?目前我收到 null

最佳答案

我不确定结果应该是什么样子,但如果你想要的话 要将完整的 xml 解析为匹配的对象,它们将如下所示:

public class CustomAttributeList {

    @JacksonXmlProperty(localName = "custom-attributes")
    private List<CustomAttributes> list;

    ...
}
@JacksonXmlRootElement(localName = "custom-attribute")
public class CustomAttributes {

    // the name attribute
    @JacksonXmlProperty
    private String name;

    // the datatype from the dt:dt field
    @JacksonXmlProperty(namespace = "dt")
    private String dt;

    // the content between the tags (if available)
    @JacksonXmlText
    private String content;

    // the values in the content (if available)
    @JacksonXmlProperty(localName = "value")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<String> values;

    ...
}

请注意,您问题中的 localName="name3" 根本不是指属性。

关于java - Jackson:将 XML 中的自定义属性反序列化为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60888038/

相关文章:

java - 如何从谷歌驱动器直接下载链接获取文件扩展名?

java - jackson 能否处理好中间关系

java - 将 JTree 转换为 XML

java - Jackson - 反序列化通用类变量

java - jack 森非法参数异常 : Can not handle managed/back reference

java - 如何测试使用 HttpServletRequest 的休息服务?

java - 如何使用 Testcontainers 将可执行文件复制到 Docker 容器

java - HTML 输入按钮位于 div 中

xml - 当 XML 中有 xmlns 时,我的 XSLT 需要做什么?

xml - 在使用Xpath时,如何只获取节点的部分字符串值?