我正在尝试设置代码以使用杰克逊创建节点树,然后可以将其用于编写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 writePath = "C:/users/itsameamario/Documents/basicXMLtest.xml";
NodeMap.writeValue(new File(writePath), rootNode);
我的输出是:
<?xml version="1.0"?>
<ObjectNode>
<Examples>
<Puppy>true</Puppy>
<Apple>2</Apple>
<Jet>Li</Jet>
</Examples>
<Single>
<One>1</One>
</Single>
</ObjectNode>
但是我想控制“ ObjectNode”并将其重命名为更合适的名称。
像上面一样手动构建节点树时,如何将其重命名为我可以控制的东西?
答案 0 :(得分:0)
要重命名rootNode,您需要使用ObjectWriter。试试这个:
XmlMapper NodeMap = new XmlMapper();
final ObjectWriter writer = NodeMap.writer().withRootName("Pumpernickel"); //Rename as appropriate
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 writePath = "C:/users/itsameamario/Documents/basicXMLtest.xml";
writer.writeValue(new File(writePath), rootNode); // Make sure you replace this line too.
应将“ ObjectNode”替换为“ Pumpernickel”。根据需要重命名。
答案 1 :(得分:0)
亚历山大的回答对我有用。令人惊讶的是,这是我在Internet上找到的唯一与此标签相关的文章。我写了一篇博客文章,并提供了其他一些发现:https://christopherkao.me/constructing-an-xml-payload-in-java-for-an-api-call/。