手动构造节点树:如何重命名<ObjectNode>标记

时间:2019-06-11 20:51:42

标签: java xml jackson

我正在尝试设置代码以使用杰克逊创建节点树,然后可以将其用于编写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”并将其重命名为更合适的名称。

像上面一样手动构建节点树时,如何将其重命名为我可以控制的东西

2 个答案:

答案 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/