推荐一个强大和灵活的处理XML的开源框架---GenXDM

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

(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,"http://localhost");
		builder.attribute("",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));
		}
	}
}


另外,大家可以到下面的地址的去下载参考书籍,写的非常的好。

http://www.genxdm.org/book/index.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇