AngryRED

Easier & Better

EXML - 基于EMF的XML工具

02 Jul 2015 » eclipse

前言

最近做一个项目,又用到了XML的解析和保存。 Java中,对XML的解析和保存有很多种方法,也有很多好用的第三方jar包。 做Eclipse插件开发这么多年,习惯了用Eclipse中的一些插件,比如EMF在建模方面就有着很诱人的优势。 EMF中模型的存储一般都是用XML或是XMI的方式,只不过要对应响应的ecore模型。 所以,用EMF来动态的加载XML就不那么复杂了。

设计思路

  1. 加载:不论什么样的XML文件,都能够正确的加载,包括所有的元素,属性,文本,注释,CDATA等。
  2. 保存:以标准的XML格式来保存模型,也就是说加载前是什么内容,保存后还是什么内容。

实现方法

  1. 简单的ecore模型
    • Document
    • Element
    • Attribute
  2. 基于EMF的XMLResource。

EXMLResourceFactoryImpl fac = new EXMLResourceFactoryImpl();

EXMLResourceImpl resource = fac.createResource(URI);

当然了,所有的关于XML的解析和保存的处理都是在EXMLResourceImpl这个类里面完成的。熟悉XMLResource的人应该知道,在XMLResource中会有一个XMLSave和XMLLoad来实现具体的保存和加载,而且会通过一个XMLHelper来辅助完成。其实,实现的逻辑也很简单,就是在需要的时候将具体的XML元素与模型做个转换就可以了。

里面可能需要注意的一点是对ExtendedMetaData中mixed属性的用法,这点可以具体的参考XMLTypeDocumentRoot中Comment,Text等的实现。

特点

  1. 完整性:继承了EMF中的XMLTypeDocumentRoot,从而能够很好的加载和保存Comment,CDATA,Text以及Namespace等。
  2. 易用性:标准的EMF使用流程。
  3. 更多请点击连接