如何生成格式化的 .xml 文件?

19 浏览
0 Comments

如何生成格式化的 .xml 文件?

我正在编写一个生成xml文件的程序。代码完美运行,得到了预期的结果。但它只输出了一行文档。我希望以格式化的方式正确缩进。有没有办法做到这一点?

以下是我使用的代码:

public class Main {
    public static void main(String[] args) {
        WriteXml(7, 9, 0);
    }
    public static void WriteXml(int WS1, int FTP1, int EMAIL1) {
        try {
            final DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
            final DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
            final Document document = documentBuilder.newDocument();
            final Element root = document.createElement("Counter");
            document.appendChild(root);
            final Element properties = document.createElement("properties");
            root.appendChild(properties);
            final Element webservice = document.createElement("age");
            webservice.appendChild(document.createTextNode(Integer.toString(WS1)));
            properties.appendChild(webservice);
            final Element ftp = document.createElement("id");
            ftp.appendChild(document.createTextNode(Integer.toString(FTP1)));
            properties.appendChild(ftp);
            final Element email = document.createElement("grade");
            email.appendChild(document.createTextNode(Integer.toString(EMAIL1)));
            properties.appendChild(email);
            final TransformerFactory transformerFactory = TransformerFactory.newInstance();
            final Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
            final DOMSource domSource = new DOMSource(document);
            final StreamResult streamResult = new StreamResult(new File("src/counter.xml"));
            transformer.transform(domSource, streamResult);
        } catch (final Exception e) {
            e.printStackTrace();
        }
    }
}

这将生成以下xml文档:



    
        7
        9
        0
    

0
0 Comments

在生成格式化的.xml文件时,有时候我们希望能够将生成的文件进行缩进,使其更易读。然而,生成的.xml文件默认情况下是没有缩进的,这给阅读和理解带来了一些困难。

为了解决这个问题,我们可以通过设置transformer的输出属性来实现缩进。其中一个属性是OutputKeys.INDENT,它用于指定是否对生成的.xml文件进行缩进。下面是具体的解决方法:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

通过以上代码,我们可以将transformer的输出属性OutputKeys.INDENT设置为"yes",从而实现对生成的.xml文件进行缩进。这样,在生成的.xml文件中,元素之间会有适当的缩进,增加了可读性。

通过设置transformer的输出属性,我们可以方便地控制生成的.xml文件的格式,使其更加易读。这对于日后的维护和理解都是非常有帮助的。所以,在生成格式化的.xml文件时,我们可以使用上述方法来实现缩进,提高代码的可读性。

0
0 Comments

问题的出现原因:

在生成格式化的.xml文件时,可能会遇到输出结果不符合预期的情况。

解决方法:

通过在获取transformer之后添加以下代码,可以解决这个问题:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

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

代码解释:

上述代码中的第一行设置了输出属性为"yes",表示要对输出进行缩进,即格式化输出。

第二行设置了输出属性"{http://xml.apache.org/xslt}indent-amount"为"2",表示每次缩进的空格数为2。

这样,在生成.xml文件时,就能够按照指定的格式进行输出,使得文件更加易读和美观。

0
0 Comments

问题出现的原因是需要将一个未格式化的XML文件进行格式化处理,使其具有良好的可读性和可维护性。

解决方法是使用上述给出的Java方法prettyPrintXml。该方法接受一个未格式化的XML字符串作为输入,并返回一个格式化后的XML字符串。具体实现过程如下:

1. 创建一个DocumentBuilderFactory对象,并设置其validating属性为true。

2. 使用DocumentBuilderFactory对象创建一个DocumentBuilder对象。

3. 创建一个InputSource对象,将未格式化的XML字符串作为参数传入。

4. 使用DocumentBuilder对象解析InputSource对象,得到一个Document对象。

5. 创建一个Transformer对象,使用TransformerFactory的newInstance方法获取。

6. 设置Transformer的输出属性,使其进行缩进,并设置缩进的数量为2。

7. 创建一个StreamResult对象,并传入一个StringWriter对象作为参数。

8. 创建一个DOMSource对象,将Document对象作为参数传入。

9. 使用Transformer对象将DOMSource对象转换为StreamResult对象。

10. 通过StreamResult的getWriter方法获取StringWriter对象,并将其转换为格式化后的XML字符串。

11. 返回格式化后的XML字符串。

以上就是解决问题的方法,通过调用prettyPrintXml方法,可以将未格式化的XML文件转换为格式化后的XML文件,提高其可读性和可维护性。

0