Использование Jackson XmlMapper и readTree () для анализа XML-файла, так как JsonNode игнорирует одноуровневые элементы xml - PullRequest
1 голос
/ 17 октября 2019

У меня есть простой 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>

У меня есть этот тест, чтобы увидеть, будет ли XmlMapper Джексона с использованием метода readTree() правильно проанализировать файл как JsonNode.

  @Test
  public void test() throws IOException {
    JsonNode node = parser.getNodeFromXML(siblingXML.getFile());
    assertThat(node.findValues("PGR")).size().isEqualTo(3);
  }

Проверка не пройдена, поскольку был найден только элемент 1 PGR.

Это логика для parser.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"
      }
    }
  }
}

Как вы можете видеть только sibling2 было проанализировано XmlMapper. Я уже искал флаги, чтобы позволить братьям и сестрам или что-то еще. Не удалось найти решение еще. Могу ли я неправильно понять, что за Дерево здесь? Это нарочно игнорирует братьев и сестер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...