Java StAX 中的 XML 输出工厂
StAX 通过使用 XMLInputFactory、XMLOutputFactory 和 XMLEventFactory 类提供各种类来创建 XML 流读取器、写入器和事件。在本文中,我们将研究XML 输出工厂。类 javax.xml.stream.XMLOutputFactory 是Java StAX API 的根组件。通过这个类,您可以创建XMLStreamWriter和XMLEventWriter 。
Note: XMLOutputFactory hold up only one property, javax.xml.stream.isRepairingNamespaces. This property is required, and its purpose is to create default prefixes and associate them with Namespace URIs.
程序:
- 使用 newInstance() 方法创建一个新的 XMLOutputFactory 抽象类。
- 使用 XMLOutputFactory 实例创建 XMLStreamWriter 或 XMLEventWriter 的实例。
- 编写 XML 的标头
- 创建语句
- 添加元素,以便我们可以添加属性、名称空间。
- 刷新和关闭打开的元素
- 添加 try 和 catch 块
它们如下图所示:
步骤 1:通过调用 newInstance() 方法创建抽象类 XMLOutputFactory 的新实例
XMLOutputFactory factory = XMLOutputFactory.newInstance();
第 2 步:使用此实例,创建一个 XMLStreamWriter 和一个 XMLEventWriter
XMLEventWriter eventWriter = factory.createXMLEventWriter(new FileWriter("data\\gfg.xml"));
XMLStreamWriter streamWriter = factory.createXMLStreamWriter(new FileWriter("data\\gfg.xml"));
第 3 步:编写 XML 的标头并继续创建起始元素。
XMLEvent event = eventFactory.createStartDocument();
event = eventFactory.createStartElement("GFG", "https://www.geeksforgeeks.org/", "document");
第 4 步:添加元素后,我们可以添加属性、命名空间。
event = eventFactory.createNamespace("GeeksforGeeks-practice", "https://practice.geeksforgeeks.org/");
writer.add(event);
event = eventFactory.createAttribute("attribute", "value");
writer.add(event);
第 5 步:刷新并关闭打开的元素。
writer.flush();
writer.close();
第 6 步:添加 try 和 catch 块。
try
{
--code--
}
catch (XMLStreamException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
XMLOutputFactory 示例
Java
// Importing required classes
import java.io.*;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Getting the XMLOutputFactory instance
XMLOutputFactory factory= XMLOutputFactory.newInstance();
// Getting the XMLEventFactory instance
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
// Try block for error hadeling
try {
// Creating EventWriter object using factory(instance)
XMLEventWriter writer = factory.createXMLEventWriter(new FileWriter("D:\\gfg_OutputFactory.xml"));
// Creating XMLEvent object using eventFactory(instance)
XMLEvent event = eventFactory.createStartDocument();
writer.add(event);
// Creating a start element
event = eventFactory.createStartElement("GFG", "https://www.geeksforgeeks.org/","document");
writer.add(event);
// Creating namespace
event = eventFactory.createNamespace("GeeksforGeeks-practice","https://practice.geeksforgeeks.org/");
writer.add(event);
// Setting attributes
event = eventFactory.createAttribute("attribute", "GFG");
writer.add(event);
// Lastly creating end element
event = eventFactory.createEndElement("GFG", "http://gfg.com", "document");
writer.add(event);
// Flush and close xmlEventWriter
writer.flush();
writer.close();
}
// Catch block to handle exceptions
catch (XMLStreamException e) {
// Print line number where exception occurs
// using printStacktrace() method
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
输出: