推荐一个强大和灵活的处理XML的开源框架---GenXDM
2015-06-01 00:15
337 查看
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的数据
(2) 基于org.apache.axiom.om的实现,生成一个XML的数据
另外,大家可以到下面的地址的去下载参考书籍,写的非常的好。 http://www.genxdm.org/book/index.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
相关文章推荐
- vehicle network communication chord
- 从百万级别数据的分析角度,Mysql,Mongodb,Hbase如何选择?
- SQL Server 开发指南---存储过程
- Curriculum Vita & Application Letter
- 人月到底有多少神话色彩
- centos7配置环境
- 人月到底有多少神话色彩
- 新浪微博产品管培生求职之路——微博发展史(二)
- Angular ng-repeat 不识别json问题
- 第一篇
- makefile 写法详解
- Android简单数据库操作练习
- GTK+实验
- 熬粥记:煮一碗红豆粥,3次才领悟煮粥大法
- PullToRefresh使用详解(三)--实现异步加载的下拉刷新列表
- 熬粥记:煮一碗红豆粥,3次才领悟煮粥大法
- UICollectionView基础
- Sicily 13981 Cow Baseball
- linux下arm驱动开发环境配置
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析