объединение двух xmls одинакового количества узлов - PullRequest
0 голосов
/ 08 апреля 2020

Я объединил два xml файла, используя java dom parser: a. xml

<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
</category>
</config>

b. xml:

<config>
<category name="mimetypes">
<!-- application mime types -->
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
<mime-type type=4></mime-type>
</category>
</config>

выход I get

<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
</category>
<mime-type type=2></mime-type>
</config>

Ожидаемый:

<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
<mime-type type=4></mime-type>
</category>
</config>

Код, который я пробовал:

public class MergeXmlDemo {
    public static void main(String args[]){
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = null;
        Document doc = null;
        Document doc2 = null;
                db = dbf.newDocumentBuilder();
                doc = db.parse(new File("second.xml"));
                doc2 = db.parse(new File("first.xml"));
                NodeList ndListFirstFile = doc.getElementsByTagName("config");
                Node nodeArea = doc.importNode(doc2.getElementsByTagName("mime-type").item(0), true);
                ndListFirstFile.item(0).appendChild(nodeArea);
                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer transformer = tFactory.newTransformer();
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");  
                DOMSource source = new DOMSource(doc);
                //StreamResult result = new StreamResult(new StringWriter());
                StreamResult result = new StreamResult(System.out);
                transformer.transform(source, result); 
}

объединение двух xml файлов с одинаковым числом узлов дает файл с тем же числом узлов и типом = 4 отсутствует в выводе. Любая помощь приветствуется

...