Я хотел бы игнорировать дублирующиеся узлы при объединении xmls, а также, если есть какие-либо изменения значений атрибутов, я бы хотел их обновить.
Я ссылался на Xml Объединить несколько Xmls вновый XML-файл , который совершенно не ответил на мой вопрос.
Base.xml
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<Configs>
<default name="default">
<something>default</something>
</default>
</Configs>
<Ratings>
<body>
</body>
</Ratings>
</rss>
Input1.xml
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<Configs>
<default name="default">
<something>default</something>
</default>
<Config name="test1">
<title>Title 1</title>
<author>Author1</author>
</Config>
<Config name="test2">
<title>Title 2</title>
<author>Author2</author>
</Config>
</Configs>
<optional>I dont want this to be copied</optional>
<Ratings>
<body>
<Items name = "object 1">
<something1>something1</something1>
</Items>
</body>
</Ratings>
</rss>
Input2.xml
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<Configs>
<default name="default">
<something>default</something>
</default>
<Config name="test3">
<title>Title 3</title>
<author>Author3</author>
</Config>
<Config name="test4">
<title>Title 4</title>
<author>Author4</author>
</Config>
</Configs>
<optional>I dont want this to be copied</optional>
<Ratings>
<body>
<Items name = "object 2">
<something1>something2</something1>
</Items>
</body>
</Ratings>
</rss>
Ожидается -> Result.xml
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<Configs>
<default name="default">
<something>default</something>
</default>
<Config name="test1">
<title>Title 1</title>
<author>Author1</author>
</Config>
<Config name="test2">
<title>Title 2</title>
<author>Author2</author>
</Config>
</Configs>
<Ratings>
<body>
<Items name = "object 1">
<something1>something1</something1>
</Items>
<Items name = "object 2">
<something1>this is updated value</something1>
</Items>
</body>
</Ratings>
</rss>
Здесь обновляется следующее:
<Items name = "object 2">
<something1>this is updated value</something1>
</Items>
Для удаления дублирующего узла я попытался использовать
Document inputDoc = db.parse(inputFile(s));
NodeList configNodeList = inputDoc.getElementsByTagName("Configs");
for (int i = 0; i < configNodeList.getLength(); i++) {
Node copiedNode = resultDoc.importNode(configNodeList.item(i), true);
NamedNodeMap attributes = copiedNode.getAttributes();
attributes.removeNamedItem("<default name=\"default\">");
resultConfigsNode.appendChild(copiedNode);
}
ОБНОВЛЕНИЕ:
Мне удалось удалить / игнорировать дублирующиеся узлы
String removeDuplicate = "name=\"default\"";
if (attributes.item(0).toString().equalsIgnoreCase(removeDuplicate)) {
continue;
}
Теперь нужна только помощь, чтобы обновить следующие
<Items name = "object 2">
<something1>this is updated value</something1>