Я хотел бы использовать Jackson JsonNode для анализа XML-файлов, которые очень часто имеют структуры такого типа:
value 1a
value 1b
value 2a
value 2b
Однако иногда одни и те же списки содержат только один элемент, как этот:
value a
value b
Проблема, с которой я сталкиваюсь при использовании JsonNode, заключается в том, что JsonNode.get("element") возвращает ArrayNode для первого XML, но ObjectNode для второго XML. Я знаю, что это можно обойти с помощью этой строки:
elements = elements.isArray() ? elements : new XmlMapper().createArrayNode().add(elements);
но я хотел бы использовать более простое решение, например, метод JsonNode, который всегда возвращает ArrayNode. Что-то вроде JsonNode.getArray("element") было бы идеально.
Знаете ли вы, можно ли это сделать с помощью Джексона?
Это полный код:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.IOException;
public class JacksonTest {
public static void main(String[] args) throws Exception {
String xmlExample1 = """
value 1a
value 1b
value 2a
value 2b
""";
String xmlExample2 = """
value a
value b
""";
processXml(xmlExample1);
processXml(xmlExample2);
}
private static final XmlMapper XM = new XmlMapper();
private static void processXml(String xml) throws IOException {
JsonNode rootNode = XM.readTree(xml);
JsonNode elements = rootNode.get("element");
elements = elements.isArray() ? elements : XM.createArrayNode().add(elements);
for (JsonNode element : elements) {
System.out.println("Value: " + element.get("a").asText());
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ment-lists
Как анализировать списки XML с помощью Джексона без особого случая для списков из 1 элемента? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как работает индексация Pytorch со списками списков против списков списков против тензоров
Anonymous » » в форуме Python - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-