У меня есть этот XML:
<XmlParent>
<name>koraytugay</name>
<bar>
<baz>
<to>Tove</to>
<qux>00000001</qux>
</baz>
</bar>
<note>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
</XmlParent>
Я хочу найти «to» и «from» и извлечь эти данные. Формат XML не всегда будет одинаковым, но «from» и «to»"всегда будет присутствовать (фактические узлы для поиска будут настроены в файле свойств)
Я собираюсь сделать это путем преобразования в файл json, поэтому я бы хотел, чтобы он выглядел следующим образом
{
to:Tove
qux:00000001
from:Jani
heading:Reminder
body:Don't forget me this weekend!
}
В настоящее время я получаю это так
XmlParent:
{
name:koraytugay
bar:
{
baz:
{
to:Tove
qux:00000001
}
}
note:
{
from:Jani
heading:Reminder
body:Don't forget me this weekend!
}
}
}
Я пробовал несколько различных методов.У меня есть XSD, который выглядит следующим образом (удалил фактические данные из тега схемы, но это работает нормально)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns=""
targetNamespace=""
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation xml:lang="en">
Initial Draft
</xs:documentation>
</xs:annotation>
<xs:element name="XMLExample">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Это то, что я сейчас делаю
private static final Log LOGGER = LogFactory.getLog(XmlConverter.class);
public Map<String, Object> xmlStringToHashMap(String xml) {
JSON json = xmlStringToJSON(xml);
return jsonToMap(json.toString(2));
}
public Map<String, Object> jsonToMap(String jsonString) {
ObjectMapper mapper = new ObjectMapper();
try {
Map<String, Object> jsonInMap = mapper.readValue(jsonString, new TypeReference<Map<String, Object>>() {
});
LOGGER.info("JSON Map created: " + jsonInMap);
return jsonInMap;
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
return null;
}
public JSON xmlStringToJSON(String xml) {
XMLSerializer xmlSerializer = new XMLSerializer();
return xmlSerializer.read(xml);
}
Любая идея, какдобавить элементы и их данные в один файл JSON или HashMap, игнорируя родительские теги?