Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaDOM在一行中解析XML_Java_Xml_Dom - Fatal编程技术网

JavaDOM在一行中解析XML

JavaDOM在一行中解析XML,java,xml,dom,Java,Xml,Dom,因此,我试图从arraylist中获取XML。我的程序按预期工作,只是生成的XML都在一行中,一个元素接一个元素,而不是通常的XML格式。这是我的密码: public static void obtenirClientsXml(ArrayList<Client> llistaClients){ try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

因此,我试图从arraylist中获取XML。我的程序按预期工作,只是生成的XML都在一行中,一个元素接一个元素,而不是通常的XML格式。这是我的密码:

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();
    }
}

有什么想法吗?

尝试向变压器添加属性:

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

我认为属性的方法是明确的:第一个是缩进,第二个是选择空格的数量,找到刚刚更改的解决方案:

现在,它可以像suposed一样工作

        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);