強大和靈活的處理XML的開源框架:GenXDM

cey6 9年前發布 | 46K 次閱讀 GenXDM XML操作類庫

GenXDM是非常著名的中間件軟件廠商TIBCO公司貢獻一個出來XML的一個非常靈活和強大的開源框架(基于Apache的License),其提供了一套機制和接口,把所有的DOM 的操作和解析模型通過一種統一的方式來實現。因此,GenXDM框架本身提供了 AxiomProcessingContext,DomProcessingContext和XmlNodeContext的一套處理機制。其實 GenXDM本身只是一個殼子,必選由相應的Axiom,Dom或者XmlNode的配合起來,才能進行XML文件的create,update和 Read。大家可以從下面的地址去下載其源代碼:http://www.genxdm.org/source-repository.html

最后給大家2個簡單的例子,通過GenXDM生成一個XML數據,非常的靈活和簡單,可以還可以兼容不同的XML的實現的框架。希望能對大家起到拋磚引玉的作用。
(1)  基于org.w3c.dom.Node的實現,生成一個XML的數據

    import java.util.Iterator;
import org.genxdm.ProcessingContext;
import org.genxdm.bridge.dom.DomProcessingContext;
import org.genxdm.bridgekit.filters.FilteredFragmentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

public class CreateDom {  

    public static void main(String[] args) throws Exception {  
        ProcessingContext<Node> context = new DomProcessingContext();  
        FilteredFragmentBuilder<Node> builder = (FilteredFragmentBuilder)context.newFragmentBuilder();  
        final String LF = "\n";  
        builder.startDocument(null, null);  
        builder.text(LF);  
        builder.comment("comment");  
        builder.text(LF);  
        builder.processingInstruction("pi", "data");  
        builder.startElement("http://localhost", "element", "");  
        builder.namespace("", "http://localhost");  
        builder.namespace("xlssss", "http://localhost111");  
        builder.attribute("", "attr", "", "value", null);  
        builder.text("text");  
        builder.endElement();  
        builder.endDocument();  

        Document doc = (Document)builder.getNode();  
        System.out.println(doc);  
        Iterable<Node> ns = context.getModel().getChildElements(doc);  
        Iterator<Node> iter = ns.iterator();  
        while(iter.hasNext()){  
            Node n = iter.next();  
            System.out.println(context.getModel().getLocalName(n));  
        }  

        WriteDom2File.write2File(context, doc, "dddd.xml");  
    }  
}  </pre><br />

(2)  基于org.apache.axiom.om的實現,生成一個XML的數據

    import java.util.Iterator;
import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
import org.genxdm.ProcessingContext;
import org.genxdm.bridge.axiom.AxiomProcessingContext;
import org.genxdm.io.FragmentBuilder;

public class CreateDom {  

    public static void main(String[] args) throws Exception {  
        ProcessingContext<Object> context = new AxiomProcessingContext(  
                new OMLinkedListImplFactory());  
        FragmentBuilder<Object> builder = context.newFragmentBuilder();  
        final String LF = "\n";  
        builder.startDocument(null, null);  
        builder.text(LF);  
        builder.comment("comment");  
        builder.text(LF);  
        builder.processingInstruction("pi", "data");  
        builder.startElement("http://localhost", "element", "");  
        builder.namespace("", "http://localhost");  
        builder.attribute("", "attr", "", "value", null);  
        builder.text("text");  
        builder.endElement();  
        builder.endDocument();  

        Object doc = builder.getNode();  
        System.out.println(doc);  
        Iterable<Object> ns = context.getModel().getChildElements(doc);  
        Iterator<Object> iter = ns.iterator();  
        while (iter.hasNext()) {  
            Object n = iter.next();  
            System.out.println(context.getModel().getLocalName(n));  
        }  
    }  
}  </pre><br />
 本文由用戶 cey6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!