我正在尝试设置代码以使用杰克逊创建节点树,然后可以将其用于编写JSON或XML。我可以使JSON工作,但我也希望通过这种方式输出XML。
我的示例树如下所示:
XmlMapper NodeMap = new XmlMapper();
ObjectNode rootNode = NodeMap.createObjectNode();
ObjectNode currentNode = rootNode.putObject("Examples");
currentNode
.put("Puppy", TRUE)
.put("Apple", 2)
.put("Jet", "Li");
currentNode = rootNode.putObject("Single");
currentNode.put("One", 1);
我可以使用这棵树
String xml = rootNode.toString();
获取
{"Examples":{"Puppy":true,"Apple":2,"Jet":"Li"},"Single":{"One":1}}
表示树已正确构建,但是我一直希望它可以输出XML,因为我正在将树附加到XmlMapper。不幸的是,仅凭这一点似乎还不够。
我知道我可以拿另一个物体做类似的事情
XmlMapper XMap = new XmlMapper();
XMap.writeValue(new File(writePath), objectToBeConverted);
获取XML,但我希望使用上面的节点树,.writevalue似乎不适用于这些节点。
我如何将上述树作为XML输出(输出到字符串或文件中)?使用这种方法是否可行?
编辑:我正在使用杰克逊2.9.2版
答案 0 :(得分:1)
您应该使用writeValueAsString
,例如:
XmlMapper mapper = new XmlMapper();
com.fasterxml.jackson.databind.node.ObjectNode rootNode = mapper.createObjectNode();
ObjectNode currentNode = rootNode.putObject("Examples");
currentNode
.put("Puppy", true)
.put("Apple", 2)
.put("Jet", "Li");
currentNode = rootNode.putObject("Single");
currentNode.put("One", 1);
String xml = mapper.writeValueAsString(rootNode);