Question

please help to generate the xml file using apache axiom ,any xml file with one parent and two child tags ,I tried the following code

OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace ns1 = factory.createOMNamespace("bar","x");
OMElement root = factory.createOMElement("root",ns1);
OMNamespace ns2 = root.declareNamespace("bar1","y");
OMElement elt1 = factory.createOMElement("foo",ns1);
OMElement elt2 = factory.createOMElement("yuck",ns2);
OMText txt1 = factory.createOMText(elt2,"blah");
elt2.addChild(txt1);
elt1.addChild(elt2);
root.addChild(elt1);

please help me how to serialize the root element ,where OMElment is nonserialization api class. please help me any example .

Was it helpful?

Solution

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.xml.stream.XMLStreamException;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;


public class Example {
    public static void main(String[] args) {
       try {
            OMFactory factory = OMAbstractFactory.getOMFactory();

            OMNamespace ns1 = factory.createOMNamespace("bar", "x");
            OMElement root = factory.createOMElement("root", ns1);
            OMNamespace ns2 = root.declareNamespace("bar1", "y");

            OMElement elt1 = factory.createOMElement("foo", ns1);
            OMElement elt2 = factory.createOMElement("yuck", ns2);
            OMElement elt3 = factory.createOMElement("yuck2", ns2);

            OMText txt1 = factory.createOMText(elt2, "blah");
            OMText txt2 = factory.createOMText(elt3, "blah-blah");

            elt2.addChild(txt1);
            elt3.addChild(txt2);
            elt1.addChild(elt2);
            elt1.addChild(elt3);

            root.addChild(elt1);    

            OutputStream outputStream = null;
            try {
                outputStream = new FileOutputStream("C:\\xml.xml");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            root.serialize(outputStream); 

            root.serialize(System.out);

        } catch (XMLStreamException e) {
            e.printStackTrace();
        }
    }
}

console output:

<x:root xmlns:x="bar" xmlns:y="bar1"><x:foo><y:yuck>blah</y:yuck><y:yuck2>blah-blah</y:yuck2></x:foo></x:root>

Serialized file:

<x:root xmlns:x="bar" xmlns:y="bar1">
    <x:foo>
        <y:yuck>blah</y:yuck>
        <y:yuck2>blah-blah</y:yuck2>
    </x:foo>
</x:root>       

For more details

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top