前言
最近做一个项目,又用到了XML的解析和保存。 Java中,对XML的解析和保存有很多种方法,也有很多好用的第三方jar包。 做Eclipse插件开发这么多年,习惯了用Eclipse中的一些插件,比如EMF在建模方面就有着很诱人的优势。 EMF中模型的存储一般都是用XML或是XMI的方式,只不过要对应响应的ecore模型。 所以,用EMF来动态的加载XML就不那么复杂了。
设计思路
- 加载:不论什么样的XML文件,都能够正确的加载,包括所有的元素,属性,文本,注释,CDATA等。
- 保存:以标准的XML格式来保存模型,也就是说加载前是什么内容,保存后还是什么内容。
实现方法
- 简单的ecore模型
- Document
- Element
- Attribute
- 基于EMF的XMLResource。
EXMLResourceFactoryImpl fac = new EXMLResourceFactoryImpl();
EXMLResourceImpl resource = fac.createResource(URI);
当然了,所有的关于XML的解析和保存的处理都是在EXMLResourceImpl这个类里面完成的。熟悉XMLResource的人应该知道,在XMLResource中会有一个XMLSave和XMLLoad来实现具体的保存和加载,而且会通过一个XMLHelper来辅助完成。其实,实现的逻辑也很简单,就是在需要的时候将具体的XML元素与模型做个转换就可以了。
里面可能需要注意的一点是对ExtendedMetaData中mixed属性的用法,这点可以具体的参考XMLTypeDocumentRoot中Comment,Text等的实现。
特点
- 完整性:继承了EMF中的XMLTypeDocumentRoot,从而能够很好的加载和保存Comment,CDATA,Text以及Namespace等。
- 易用性:标准的EMF使用流程。
- 更多请点击连接。