Java 我是否正确使用XMLStreamWriter类?I';我真的看不出它通过一个简单的文件编写器提供了什么

Java 我是否正确使用XMLStreamWriter类?I';我真的看不出它通过一个简单的文件编写器提供了什么,java,xml,javax.xml,Java,Xml,Javax.xml,因此,我的代码很简单,它创建了我希望它创建的内容,但我不知道使用javax.xml.stream包是否真的有任何好处 我的要求是不是太基本而不能真正利用这个类?我看到的唯一真正的好处是writer.EndElement()和writer.EndDocument()正确地关闭标记,但是我不知道有什么方法可以创建新行或选项卡(也就是正确的格式),而不必像下面所做的那样手动写入它们 public void WriteUserInfo(String username, String passwo

因此,我的代码很简单,它创建了我希望它创建的内容,但我不知道使用
javax.xml.stream
包是否真的有任何好处

我的要求是不是太基本而不能真正利用这个类?我看到的唯一真正的好处是
writer.EndElement()
writer.EndDocument()
正确地关闭标记,但是我不知道有什么方法可以创建新行或选项卡(也就是正确的格式),而不必像下面所做的那样手动写入它们

    public void WriteUserInfo(String username, String password) 
            throws FileNotFoundException, XMLStreamException {

        outputStream = new FileOutputStream(getXmlFile());
        factory = XMLOutputFactory.newInstance();
        writer = factory.createXMLStreamWriter(outputStream);
        writer.writeStartDocument(XMLTAG);
        writer.writeCharacters("\n");
        writer.writeStartElement(USER);
        writer.writeCharacters("\n\t");
        writer.writeStartElement(USERNAME);
        writer.writeCharacters(username);
        writer.writeEndElement();
        writer.writeCharacters("\n\t");
        writer.writeStartElement(PASSWORD);
        writer.writeCharacters(password);
        writer.writeEndElement();
        writer.writeCharacters("\n");
        writer.writeEndDocument();
        writer.close();
    }

考虑使用Saxon的XMLStreamWriter接口实现。这提供了广泛的序列化选项,包括自动缩进(加上XSLT xsl:output中提供的所有其他选项)。您可以通过s9api序列化程序类获得此信息。

(1)您将获得格式良好的XML,即使您的内容中有符号或其他非法字符。(2) XML文档没有“正确的格式”这样的东西;元素之间的换行符仅仅是人类可读性的约定,并且要求任何不关心它们的读者明确地忽略它们。