Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

XML Output Factory in Java StAX

  • Last Updated : 29 Oct, 2021

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>

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!