2013-06-04 2 views
3

Я пытаюсь написать файл XML с ArrayList<Element>. Однако результат не тот, который я ожидал, и я не могу найти источник проблемы. Не могли бы вы мне помочь?Написание XML-файла из ArrayList - неправильный вывод

Вот некоторые из моего кода:

if (e.getSource() == saveMenu) { 
     writeToXML(); 
     JOptionPane.showMessageDialog(Simulation.this, 
        "File saved", 
        "Simulation", JOptionPane.INFORMATION_MESSAGE); 

    } 

public void writeToXML() throws IOException { 

    int size = alElementToXML.size(); 
    for (int i = 0; i < size; i++) { 
     alIds.add(alElementToXML.get(i).attributeValue("id")); 
    } 

    OutputFormat format = OutputFormat.createPrettyPrint(); 
    format.setEncoding("UTF-8"); 
    XMLWriter xmlWriter = null; 
    xmlWriter = new XMLWriter(new OutputStreamWriter(
      new FileOutputStream("Simulation_" + MASG_GUI.getContainerNameTxt().getText() + "_Details.xml"), "UTF8"), 
      format); 
    try { 
     for (int i = 0; i < size; i++) { 
      xmlWriter.write(configs.XMLwriterDOM4J.createXMLDocumentForSimulations(alElementToXML, alIds.get(i))); 
     } 
    } finally { 

     xmlWriter.flush(); 
     xmlWriter.close(); 
    } 
} 

Это createXMLDocumentForSimulations метод:

public static Document createXMLDocumentForSimulations(ArrayList<Element> elems, String id) { 

    Document document = DocumentHelper.createDocument(); 
    Element root = document.addElement("simulation"); 
    Element agent1 = root.addElement("member").addAttribute("id", id); 
    int size = Simulation.getAlElementToXML().size(); 
    for (int i = 0; i < size; i++) {   
     agent1.addElement(elems.get(i).asXML()); 
    } 
    return document; 
} 

и один пример выходных я получаю:

<?xml version="1.0" encoding="UTF-8"?> 

<simulation> 
    <member id="House"> 
    <<member id="House"><id>1</id><type>1</type><max_usage>1</max_usage><min_usage>1</min_usage><average_usage>1</average_usage></member>/> 
    <<member id="CSP"><id>1</id><type>1</type></member>/> 
    <<member id="VPP"><id>6</id><type>6</type></member>/> 
    </member> 
</simulation> 
<?xml version="1.0" encoding="UTF-8"?> 

<simulation> 
    <member id="CSP"> 
    <<member id="House"><id>1</id><type>1</type><max_usage>1</max_usage><min_usage>1</min_usage><average_usage>1</average_usage></member>/> 
    <<member id="CSP"><id>1</id><type>1</type></member>/> 
    <<member id="VPP"><id>6</id><type>6</type></member>/> 
    </member> 
</simulation> 

То, что я хотел было примерно так:

<?xml version="1.0" encoding="UTF-8"?> 

<simulation> 
    <member id="House"> 
    <id>1</id> 
    <type>1</type> 
    <max_usage>1</max_usage> 
    <min_usage>1</min_usage> 
    <average_usage>1</average_usage> 
    </member> 
    <member id="VPP"> 
    <id>6</id> 
    <type>6</type> 
    </member> 
</simulation> 

Что я делаю неправильно и как его исправить, чтобы получить ожидаемый результат?

Благодаря

ответ

2

Чтобы начать, у вас есть для цикла вокруг вашего XMLWriter поэтому у вас есть два < моделирования > корневых элементов.

+0

спасибо большое, что было одной из проблем :) – SaintLike

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