Я пытаюсь объединить несколько xmls в один xml, используя парсер DOM. Я довольно новичок в этом процессе. У меня возникли проблемы при обновлении значений и порядка XML, который я буду получать из JSON. Здесь количество xmls для объединения равно # json.
Document outputDoc = db.parse(baseXml);
Node outputNode = outputDoc.getElementsByTagName("Entry").item(0);
for (String inputXml : inputXmls) {
Document inputDoc = db.parse(inputXml);
inputDoc.normalize();
NodeList nodeList = inputDoc.getElementsByTagName("Person");
for (int i = 0; i < nodeList.getLength(); i++) {
Node copiedNode = outputDoc.importNode(nodeList.item(i),true);
outputNode.appendChild(copiedNode);
}
}
processXml(outputDoc, file);
}
private static void processXml(Document xml, File file) throws TransformerException {
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
DOMSource source = new DOMSource(xml);
StreamResult result = new StreamResult(file);
tf.transform(source, result);
}
base.xml
<?xml version="1.0" encoding="utf-8" ?>
<Entry>
</Entry>
xml1.xml
<?xml version="1.0" encoding="utf-8" ?>
<Entry>
<Person>
<Name>
<NameTitle>
<Value>Name</Value>
</NameTitle>
</Name>
<Details>
<PersonDetails>
<Name>
<NameValue></NameValue>
</Name>
</PersonDetails>
</Details>
</Person>
</Entry>
json1.json
{
"id": 1,
"json": [
{
"nameTitle": "Full Name",
"displayOrder": 2
},
{
"nameValue": "John Doe",
"displayOrder": 1
}
]
}
Пока я получаю следующее '
<Entry>
<Person>
<Name>
<NameTitle>
<Value>Name</Value>
</NameTitle>
</Name>
<Details>
<PersonDetails>
<Name>
<NameValue/>
</Name>
</PersonDetails>
</Details>
</Person>
</Entry>
Это ожидаемый результат
<Entry>
<Person>
<Details>
<PersonDetails>
<Name>
<NameValue>John Doe</NameValue>
</Name>
</PersonDetails>
</Details>
<Name>
<NameTitle>
<Value>Full Name</Value>
</NameTitle>
</Name>
</Person>
</Entry>