使用 jackson-dataformat-xml 库将属性设置为空 xml 标签

Set attribute to empty xml tag using jackson-dataformat-xml library

我有序列化为 xml 的 HashMap。 当对象为空时

HashMap<String, Object> h1 = new HashMap<>();
h1.put("test", null);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(h1));

Jackson 生成了类似这些的东西

<HashMap>
   <test/>
</HashMap>

所以我需要以某种方式向这个空标签添加属性

<HashMap>
   <test attribute = "something"/>
</HashMap>

可能吗?

你可以这样做...

而不是 null,您需要在它周围使用类似薄包装的东西,这将指示 XmlMapper 打印此属性信息。

这是解决问题的有效测试。

public class TestXml {
    
    class NullWrapper {
        @JacksonXmlProperty(isAttribute = true)
        private String attribute = "something";
    }

    @Test
    void test() throws JsonProcessingException {
        var mapper = new XmlMapper();
        var h1 = new HashMap<>();
        h1.put("test", new NullWrapper());
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(h1));
    }
}

输出是...

<HashMap>
  <test attribute="something"/>
</HashMap>

这是否解决了您的问题?在评论里告诉我。