【问题标题】:Manually constructing node tree: how do I rename <ObjectNode> tags手动构建节点树:如何重命名 <ObjectNode> 标签
【发布时间】:2019-10-26 08:05:19
【问题描述】:

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

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

【问题讨论】:

  • “理想输出”不是有效的XML。在线查看validator。您需要有包装ExamplesSingle 的根节点。
  • 问题调整为只是关于重命名。

标签: java xml jackson


【解决方案1】:

要重命名根节点,您需要使用 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”。根据需要重命名。

【讨论】:

    【解决方案2】:

    亚历山大的回答对我有用。令人惊讶的是,这是我在 Internet 上找到的唯一一篇与此标签相关的文章。我写了一篇博客文章,其中包含一些额外的发现:https://christopherkao.me/constructing-an-xml-payload-in-java-for-an-api-call/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多