0

使用 Jackson 或 JAXB,有没有办法将子 XML 元素的整个子树反序列化/编组为字符串?

例如,给定以下 XML:

<root>
  <foo>
    <bar>
      <baz/>
    </bar>
  </foo>
</root>

有没有办法将其反序列化/编组到以下类

@XmlRootElement
public class Root {
    private String foo;

    // constructors, getters, setters, etc.
}

结果会是什么样子Root(foo="<bar><baz/></bar>")

4

1 回答 1

1

您可以为此编写自己的杰克逊反序列化器:

public class Test {
  public static void main(String[] args) throws Exception {
    ObjectMapper mapper = new XmlMapper();
    final SimpleModule module = new SimpleModule("configModule",   Version.unknownVersion());
    module.addDeserializer(Root.class, new DeSerializer());
    mapper.registerModule(module);
    // Root readValue = mapper.readValue(<xml source>);
  }
}

class DeSerializer extends StdDeserializer<Root> {

  protected DeSerializer() {
    super(Root.class);
  }

  @Override
  public Root deserialize(JsonParser p, DeserializationContext ctxt) throws Exception {
    // use p.getText() and p.nextToken to navigate through the xml and construct Root object
    return new Root();

  }
}
于 2018-09-05T04:51:05.697 回答