【问题标题】:sample xml file generation using apache axiom使用 apache axiom 生成示例 xml 文件
【发布时间】:2014-02-12 10:47:44
【问题描述】:

请帮助使用 apache axiom 生成 xml 文件,任何带有一个父标签和两个子标签的 xml 文件,我尝试了以下代码

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);

请帮助我如何序列化根元素,其中 OMElment 是非序列化 api 类。 请帮我举个例子。

【问题讨论】:

    标签: java xml apache axiom


    【解决方案1】:
    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();
            }
        }
    }
    

    控制台输出:

    <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>

    序列化文件:

    <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>       
    

    更多详情

    【讨论】:

    • 谢谢,它对我有用,你的序列化文件解释了根元素问题。
    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多