使用Jackson库打印XML

使用Jackson库打印XML,xml,jackson,pretty-print,Xml,Jackson,Pretty Print,我试图使用Jackson库通过JAXB注释将Java对象序列化为XML。但是,我在打印XML输出时面临一个问题 下面是我的示例代码用法: ObjectMapper mapper = new XmlMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); String xml = mapper.writeValueAsString(person); 我看到了下面的例外。这里的问题是Jackson使用Stax2Writer作为XML编

我试图使用Jackson库通过JAXB注释将Java对象序列化为XML。但是,我在打印XML输出时面临一个问题

下面是我的示例代码用法:

ObjectMapper mapper = new XmlMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String xml = mapper.writeValueAsString(person);
我看到了下面的例外。这里的问题是Jackson使用Stax2Writer作为XML编写器,而Stax2似乎不支持编写原始字符串(在本例中,DefaultPrettyPrinter尝试将“\n”作为原始字符串写入)


关于如何解决这个问题有什么想法吗?

这是由于java.lang.UnsupportedOperationException:

如果实现了未实现的方法,那么代码应该可以正常工作。有关此异常的更多信息,请检查此项

()


谢谢

根据Stax2WriterAdapter的文档,他们的默认实现不完整。代码中的注释还指出,writeRaw()方法不能使用Java运行时的默认值Stax 1.0实现

您应该按照上的建议切换到使用Stax2库

在我将以下Maven依赖项添加到项目中后,下面的示例开始按预期工作:

<dependency>
    <groupId>org.codehaus.woodstox</groupId>
    <artifactId>woodstox-core-asl</artifactId>
    <version>4.1.4</version>
</dependency>
输出:

<Person>
   <name>John</name>
</Person>

约翰

我使用以下依赖项对上述问题进行排序。以下是这些人的名单:

1) jackson-annotations-2.9.8.jar

2) jackson-core-2.9.8.jar

3) jackson-databind-2.9.8.jar

4) jackson-dataformat-xml-2.9.8.jar

5) jackson-module-jaxb-annotations-2.9.8.jar

6) stax2-api-4.0.0.jar

7) woodstox-core-asl-4.4.1.jar


@Urosh T:内容已更新。

我已经提到Stax2Writer似乎不支持编写原始字符,如“\n”。我的问题更多的是关于如何使用jackson漂亮地打印XML,因为他们记录了它的支持。请不要给出“1链接答案”。使用链接提供解决方案的参考。特别是在这种情况下,指向图像的链接没有多大帮助。请考虑编辑你的答案
<Person>
   <name>John</name>
</Person>