2016-08-02 2 views
0

Я передаю все дети xml, которые у меня есть, и после обнаружения у ребенка подщелки с именем: TYPE, , если он имеет значение F, он затем удаляется из моего объекта: resultObjectAtt. И то, что остается в resultObjectAtt, - это , переданный функции, которые создают новый xml-файл с переданным контентом. Мой вопрос - что мне делать, чтобы добавить детей с F в новый xml-файл, не изменяя ничего в resultObjectAtt.Создание нового файла xml на основе условия с использованием java

for (int j = 0; j < childElem.size(); j++) { 
//Number of children under the root 

    subChildElem = childElem.get(j).getChildren(); // subchildren 

    for (int j2 = 0; j2 < subChildElem.size(); j2++) { 
     Name = subChildElem.get(j2).getName(); //subchild name 
     Value = subChildElem.get(j2).getValue(); //subchild value 
     if(Name.equalsIgnoreCase("TYPE")){ 
      if(Value.equals("F")){ 
       resultObjectAtt.getRootElement().getChildren().remove(j); 
       convertDocumentToXmlFile("C:\\test.xml", resultObjectAtt); 
      } 
     } 
    } 
} 



private void convertDocumentToXmlFile(String path, Document doc){ 

    try { 
     XMLOutputter xmlOutput = new XMLOutputter(); 

     xmlOutput.setFormat(Format.getPrettyFormat()); 
     xmlOutput.output(doc, new FileWriter(path)); 

     System.out.println("File Saved!"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

ответ

0

Вы создаете новый Document объект, а затем "копировать" на Node объекты, которые вы хотите, с помощью importNode().

+0

Не будет ли это тяжелой операцией? Мне было любопытно узнать, есть ли лучший способ? – JavaHopper

+1

Ну, вы можете вызвать ['approNode()'] (https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html#adoptNode (org.w3c.dom. Узел)) вместо этого «перемещать» узел «Узел». – Andreas

Смежные вопросы