使用 ToXmlGenerator 序列化 XML 文件

问题描述 投票:0回答:1

我需要序列化一个XML,我想要的输入是这样的:

 <item id="123">description</item>

我有一个具有以下代码的序列化器:

        toXmlGenerator.writeFieldName("item");
        toXmlGenerator.writeStartObject();
        toXmlGenerator.setNextIsAttribute(true);
        toXmlGenerator.writeFieldName("id");
        toXmlGenerator.writeString(element.getId());
        toXmlGenerator.setNextIsAttribute(false);
        toXmlGenerator.writeStringField("",element.getValue());
        toXmlGenerator.writeEndObject();

通过以上我得到:

  <item id="123">
              <>description</>
            </item>

我尝试了不同的选项 toXmlGenerator.writeStringField("",element.getValue());

但是没有任何作用,我尝试了

toXmlGenerator.writeString(element.getValue());
但我收到以下错误:

com.fasterxml.jackson.databind.JsonMappingException: Can not write String value, expecting field name

有办法做到这一点吗?

xml serialization jackson jackson-dataformat-xml xml-generation
1个回答
0
投票

有一个

setNextIsUnwrapped(boolean)
方法可以实现不带节点名称的值输出。 toXmlGenerator.setNextIsUnwrapped(true);

应该放在
writeStringField()

之前:

toXmlGenerator.setNextIsAttribute(false);
toXmlGenerator.setNextIsUnwrapped(true);
toXmlGenerator.writeStringField("", element.getValue());
toXmlGenerator.writeEndObject();

© www.soinside.com 2019 - 2024. All rights reserved.