Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson XmlMapper和readTree()将XML文件解析为JsonNode将忽略XML元素同级_Java_Xml_Jackson - Fatal编程技术网

Java 使用Jackson XmlMapper和readTree()将XML文件解析为JsonNode将忽略XML元素同级

Java 使用Jackson XmlMapper和readTree()将XML文件解析为JsonNode将忽略XML元素同级,java,xml,jackson,Java,Xml,Jackson,我有一个简单的XML文件,其结构如下 <?xml version = "1.0" encoding = "UTF-8"?> <EXPORT id="0" > <PUB id="1"> <PGR id="2" name="siblingparent" > <PGR id="3" name="sibling1"/> <PGR id="4" name="siblin

我有一个简单的XML文件,其结构如下

<?xml version = "1.0" encoding = "UTF-8"?>
<EXPORT id="0" >
    <PUB id="1">
        <PGR id="2" name="siblingparent" >
            <PGR id="3" name="sibling1"/>
            <PGR id="4" name="sibling2"/>
        </PGR>
    </PUB>
</EXPORT>

测试失败,因为只找到了
1
PGR
元素

这是解析器的逻辑。getNodeFromXML:

  public JsonNode getNodeFromXML(File xmlFile) throws IOException {
    XmlMapper xmlMapper = new XmlMapper();
    return xmlMapper.readTree(xmlFile);
  }
这就是测试中
JsonNode
对象/变量
node
的返回方式:

{
  "id": "0",
  "PUB": {
    "id": "1",
    "PGR": {
      "id": "2",
      "name": "siblingparent",
      "PGR": {
        "id": "4",
        "name": "sibling2"
      }
    }
  }
}

正如您所看到的,
XmlMapper
只解析了
sibling2
to。我已经在寻找允许兄弟姐妹的旗帜了。还没有找到解决办法。我可能会误解这里的树是什么吗?它是否故意忽略同级键?

不完全确定,但它可能与重复的同级键有关。理论上,JSON允许这样做,但假设许多序列化框架都会禁止这样做是有道理的。请参阅以获取参考。@Mena从最后一个链接中删除点
JsonNode
无法处理许多同名属性。您需要引入手动反序列化或提供适合您的
XML
负载的
POJO
类。看看类似的问题:,好的,我明白了。我试图重新启用副本,但无法使用
XmlMapper#enable
方法。它有很多功能,包括在出现重复密钥时引发异常,但不幸的是无法禁用它:(不完全确定,但可能与重复的同级别键有关。理论上JSON允许这样做,但假设许多序列化框架会禁止这样做是有意义的。请参阅以获取参考。@Mena从最后一个链接删除点
JsonNode
无法处理许多同名属性。您需要介绍uce手动反序列化或提供符合您的
XML
有效负载的
POJO
类。看看类似的问题:,好的,我明白。我试图重新启用重复项,但无法使用
XmlMapper#enable
方法。它有很多功能,包括重复键时引发异常但不幸的是,没有办法禁用它:(
{
  "id": "0",
  "PUB": {
    "id": "1",
    "PGR": {
      "id": "2",
      "name": "siblingparent",
      "PGR": {
        "id": "4",
        "name": "sibling2"
      }
    }
  }
}