所以我试图从数组列表中获取 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");
我认为属性的含义很明确:第一是缩进,第二是选择空格数
关于java DOM 在一行中解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60157607/