📜  Java StAX 中的 XML 输出工厂

📅  最后修改于: 2022-05-13 01:54:47.876000             🧑  作者: Mango

Java StAX 中的 XML 输出工厂

StAX 通过使用 XMLInputFactory、XMLOutputFactory 和 XMLEventFactory 类提供各种类来创建 XML 流读取器、写入器和事件。在本文中,我们将研究XML 输出工厂。类 javax.xml.stream.XMLOutputFactory 是Java StAX API 的根组件。通过这个类,您可以创建XMLStreamWriterXMLEventWriter

程序:

  1. 使用 newInstance() 方法创建一个新的 XMLOutputFactory 抽象类。
  2. 使用 XMLOutputFactory 实例创建 XMLStreamWriter 或 XMLEventWriter 的实例。
  3. 编写 XML 的标头
  4. 创建语句
  5. 添加元素,以便我们可以添加属性、名称空间。
  6. 刷新和关闭打开的元素
  7. 添加 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();
        }
    }
}


输出: