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

原创 2015年06月01日 00:15:53

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


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

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

java并发编程--Executor框架(一) 摘要: Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程

java并发编程--Executor框架(一) 摘要:        Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任...

自己实现的一个寻径算法的框架,具体算法采用动态库模式,可以非常方便灵活地尝试多种寻径算法

/** * 寻径算法框架 * by lxslove * e-mail:moodlxs@163.com * 用法: * 注意:编译本框架需要加上-ldl选项 * g++ -ldl...
  • lxslove
  • lxslove
  • 2011年09月09日 19:22
  • 412

一个灵活的boost.asio的TCP Server 框架

boost.asio给出了TCP Server的类,但是应用在数据处理中,有以下的几个问题: 1.读例程中,处理到达数据是硬编码的 2.例程中,针对每个读取的数据,分析后作了回应。 在应用中,经...
  • ploto
  • ploto
  • 2012年06月04日 19:52
  • 1321

值得推荐的C/C++框架和库,包含很多开源项目 (真的很强大)

值得学习的C语言开源项目 C++资源大全 构建系统 C/C++相关软件 测试

Mockito:一个强大的用于 Java 开发的模拟测试框架

Mockito:一个强大的用于 Java 开发的模拟测试框架

Mockito:一个强大的用于 Java 开发的模拟测试框架

介绍   本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用Mockito的Java示例。 模拟(Mock)的概念   ...
  • F7ANTY
  • F7ANTY
  • 2015年02月13日 15:50
  • 406

Mockito:一个强大的用于Java开发的模拟测试框架

介绍   本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用Mockito的Java示例。 模拟(Mock)的概念    在软件开发的世界之外, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:推荐一个强大和灵活的处理XML的开源框架---GenXDM
举报原因:
原因补充:

(最多只允许输入30个字)