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 context = new DomProcessingContext();
FilteredFragmentBuilder 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 ns = context.getModel().getChildElements(doc);
Iterator iter = ns.iterator();
while(iter.hasNext()){
Node n = iter.next();
System.out.println(context.getModel().getLocalName(n));
}
WriteDom2File.write2File(context, doc, "dddd.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
http://www.genxdm.org/book/index.html