java DOM разбирает XML в одну строку - PullRequest
0 голосов
/ 10 февраля 2020

Так что я пытаюсь получить XML от arraylist. Моя программа работает, как и ожидалось, за исключением того, что результирующий XML находится в одной строке, элемент за элементом, вместо обычного формата XML. Вот мой код:

</p>

<code>public static void obtenirClientsXml(ArrayList<Client> llistaClients){
    try {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.newDocument();


        Element eRoot = doc.createElement("llista_clients");
        doc.appendChild(eRoot);

        // recorremos el array list
        Iterator<Client> i = llistaClients.iterator();
        while (i.hasNext()){
            Client c = i.next();

            Element eClient = doc.createElement("client");
            eRoot.appendChild(eClient);

            Element eNom = doc.createElement("nom");
            eNom.appendChild(doc.createTextNode(c.getNom()));
            eClient.appendChild(eNom);

            Element eCognom = doc.createElement("cognom");
            eCognom.appendChild(doc.createTextNode(c.getCognoms()));
            eClient.appendChild(eCognom);                
        }

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult("C:/RentalClot/Clients/clients.xml");
        transformer.transform(source, result);

    } catch (Exception e){
        e.printStackTrace();
    }
}
</code>

есть идеи?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Попробуйте добавить свойства к вашему преобразователю:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

Я думаю, что средства свойств понятны: первый для отступа, второй для выбора количества пробелов

0 голосов
/ 10 февраля 2020

найти решение, только что измененное на:

</p>

<code>        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult("C:/RentalClot/Clients/clients.xml");
        transformer.transform(source, result);
</code>

теперь работает как доп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...