java DOM 在一行中解析 XML

标签 java xml dom

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

相关文章:

java - Java API 日期错误

Java内存泄漏理解

JavaScript DOM : add an attribute to a <tr>

java - jGrasp Java 字符串到 boolean 值错误! "ClientID.java:20: error: incompatible types: String cannot be converted to boolean"

Java:Map中的内部数据结构

php - 提交表单而不刷新

c# - 在C#中序列化为XML时将属性更改为camelCase

c# - XSL + XML -> 用于 C# 的 PDF

javascript - 添加和删​​除项目后添加下一个项目的可能性问题 jQuery mobile

javascript - Prototype.js 从元素中获取文本