У меня есть простой 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
. Я уже искал флаги, чтобы позволить братьям и сестрам или что-то еще. Не удалось найти решение еще. Могу ли я неправильно понять, что за Дерево здесь? Это нарочно игнорирует братьев и сестер?