java DOM 在一行中解析 XML



所以我试图从数组列表中获取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");

我认为属性的手段很明确:第一个缩进,第二个选择空格数

找到刚刚更改为的解决方案:


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

现在按预期工作。

最新更新