Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

XML Output Factory in Java StAX

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

StAX provides various classes to create XML stream readers, writers, and events by using the XMLInputFactory, XMLOutputFactory, and XMLEventFactory classes. In this article we’re going to study about XML Output Factory . The class javax.xml.stream.XMLOutputFactory is a root component of the Java StAX API. From this class you can create both an XMLStreamWriter and an 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.

Procedure:

  1. Create an new abstract class of XMLOutputFactory using newInstance() method.
  2. Create an instance of XMLStreamWriter or XMLEventWriter using XMLOutputFactory instance.
  3. Writing the header of the XML
  4. Create statements
  5. Add elements so that we can addon attributes, namespaces.
  6. Flush and close opened elements
  7. Add try and catch block

They are as illustrated below as follows:

Step 1: Create new instance of abstract class XMLOutputFactory by calling the newInstance() method 

XMLOutputFactory factory = XMLOutputFactory.newInstance();

Step 2: Using this instance, Create an XMLStreamWriter and an XMLEventWriter

XMLEventWriter eventWriter = factory.createXMLEventWriter(new FileWriter("data\\gfg.xml"));
XMLStreamWriter streamWriter = factory.createXMLStreamWriter(new FileWriter("data\\gfg.xml"));

Step 3: Write the header of the XML and proceed to create start elements.

XMLEvent event = eventFactory.createStartDocument();
event = eventFactory.createStartElement("GFG", "https://www.geeksforgeeks.org/", "document");

Step 4: After adding elements we can add attributes, namespace.

event = eventFactory.createNamespace("GeeksforGeeks-practice", "https://practice.geeksforgeeks.org/");
writer.add(event);
event = eventFactory.createAttribute("attribute", "value");
writer.add(event);

Step 5: Flush and close opened elements.

writer.flush();
writer.close();

Step 6: Add try and catch block.

try 
    {
       --code--
           } 
catch (XMLStreamException e) 
    {
     e.printStackTrace();
    } 
catch (IOException e) 
    {
    e.printStackTrace();
    }

Example of 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();
        }
    }
}

Output:

<?xml version='1.0' encoding='UTF-8'?>
<GFG:document xmlns:GeeksforGeeks-practice="https://practice.geeksforgeeks.org/" attribute="GFG>
</GFG:document>

My Personal Notes arrow_drop_up
Last Updated : 29 Oct, 2021
Like Article
Save Article
Similar Reads
Related Tutorials