Объединить несколько XML-файлов с помощью Java нодлиста

1

Чтобы слить несколько xml файлов с помощью nodelist, я использовал ниже код, но его выходной файл имеет повторяющиеся (повторяющиеся) значения.

Структура папок xml файлов приведена ниже

                 c:|--20140525214726/search.xml
                   |--20140525214727/search.xml
                   |--20140525214728/search.xml                      
                   |.
                   |.
                   |--20140525214736/search.xml     

Код:
Я использовал int k in for loop для прокрутки всех папок, показанных выше.
И добавлены узлы PropertyDetails всех файлов с 20140525214727 по 20140525214736 до 20140525214726/search.xml.

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();   
domFactory.setIgnoringComments(true);  
DocumentBuilder builder = domFactory.newDocumentBuilder(); 
Document doc = builder.parse(new File("C:\\20140525214726\\search.xml"));   
NodeList nodes = doc.getElementsByTagName("PropertyDetails");  
for(int k=26; k<=37; k++){  

   Document doc1 = builder.parse(new File("C:\\201405252147"+k+"\\search.xml"));   
   NodeList nodes1 = doc1.getElementsByTagName("PropertyDetails");

   for(int i=0;i<nodes1.getLength();i=i+1){  
                Node n= (Node) doc.importNode(nodes1.item(i), true);  
        nodes.item(i).getParentNode().appendChild(n);
             }

     } 

Transformer transformer = TransformerFactory.newInstance().newTransformer();  
transformer.setOutputProperty(OutputKeys.INDENT, "yes");  

StreamResult result = new StreamResult(new StringWriter());  
DOMSource source = new DOMSource(doc);  
transformer.transform(source, result);  
Writer output = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("SeeOfXML.xml"), "UTF-8"));


String xmlOutput = result.getWriter().toString();  
output.write(xmlOutput);
output.close();

Неправильно ли они с моим кодом объединить несколько файлов xml?

  • 0
    Что происходит, когда вы запускаете это? Какие-то исключения?
  • 0
    @helderdarocha без исключений, но узлы (<PropertyDetails>) повторяются (дубликаты узлов)
Показать ещё 1 комментарий
Теги:
nodelist
xmlnodelist

1 ответ

0

Вы разбираете первый файл дважды. Сначала здесь:

Document doc = builder.parse(new File("src/main/resources/20140525214726/search.xml"));
NodeList nodes = doc.getElementsByTagName("PropertyDetails");

А затем снова в цикле:

for (int k = 26; k <= 30; k++) {
    Document doc1 = builder.parse(new File("src/main/resources/" + "201405252147" + k + "/search.xml"));

Поскольку k равно 26, вы снова читаете файл из каталога 20140525214726.

Измените его на 27 чтобы он пропустил этот файл:

for (int k = 26; k <= 30; k++) { ... }

Теперь он должен работать, если нет других проблем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню