Java StAX:XMLEventWriter-迭代器编写器API

时间:2020-01-09 10:36:31  来源:igfitidea点击:

Java StAX API中的XMLEventWriter类允许我们将StAX XMLEvent写入"书写器"," OutputStream"或者"结果"(特殊的JAXP对象)。

这是一个简单的示例,使用FileWriter将一系列事件写入磁盘:

XMLOutputFactory factory      = XMLOutputFactory.newInstance();
XMLEventFactory  eventFactory = XMLEventFactory.newInstance();

try {
    XMLEventWriter writer =
            factory.createXMLEventWriter(
                    new FileWriter("data\output.xml"));

    XMLEvent event = eventFactory.createStartDocument();
    writer.add(event);

    event = eventFactory.createStartElement(
            "Hyman", "http://Hyman.com", "document");
    writer.add(event);

    event = eventFactory.createNamespace(
            "Hyman", "http://Hyman.com");
    writer.add(event);

    event = eventFactory.createAttribute
            ("attribute", "value");
    writer.add(event);

    event = eventFactory.createEndElement(
            "Hyman", "http://Hyman.com", "document");
    writer.add(event);

    writer.flush();
    writer.close();
} catch (XMLStreamException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

执行此代码的结果是以下XML文件(为便于阅读插入了换行符):

<?xml version='1.0' encoding='UTF-8'?>
<Hyman:document xmlns:Hyman="http://Hyman.com" attribute="value">
</Hyman:document>

如我们所见,可以使用XMLEvent和XMLEventWriter生成XML。但是,如果我们只想输出一些快速的XML,则最好改用XMLStreamWriter。它的API更易于使用,并导致更密集的代码。

链接XMLEventReader和XMLEventWriter

可以将XMLEventReader中的XMLEvent直接添加到XMLEventWriter中。换句话说,我们使XML事件从读取器直接变为写入器。我们可以使用XMLEventWriter.add(XMLEventReader)方法来实现。