xml文件处理经验总结
2007-09-26 11:41
274 查看
1.xml文件存储效率不高,存在很大的冗余信息量
excel文件与xml文件的转化是一个指数级的函数关系,如下表所示。
经过winzip的压缩,一个236361kb的xml文件可以被压缩为659kb,压缩比为359:1,这说明了xml的冗余信息量是很巨大的。
打开excel转换过来的xml文件,就可以看到每描述一个cell的内容,xml都要用60个字符的附加信息。如下所示。<Cell ss:StyleID="s29"><ss:Data ss:Type="String"
xmlns="http://www.w3.org/TR/REC-html40">aa</ss:Data></Cell>
因此,xml的文件的存储或者是上传,一定要做压缩处理,否则其效率是很低的。或者如果可以找到其他替代的存储或者编码格式,例如json,最好可以先考虑。在对效率不敏感的时候,xml才是一个好的选择。
(2)xml处理效率不高,对于大xml文件,无论是dom处理或者是sax处理都不是理想处理方式。
http://developer.51cto.com/art/200604/25541.htm 这篇文章对这个问题有很详细的描述。
http://cavingdeep.cnblogs.com/archive/2006/03/15/350456.html <<新兴XML处理方法VTD-XML介绍>>这篇文章有很好的分析。
基本上的xml的处理是一个很好内存的操作,现在也出现一种新的处理方式vtd-xml.如下所述。
VTD-XML的解析速度是SAX(with NULL content handler)的1.5x~2.0x。With NULL content handler的意思就是说SAX解析中没有插入任何额外的处理逻辑,也就是SAX的最高速度。
VTD-XML的内存占用是原XML的1.3x~1.5x(其中1.0x的部分是原XML,0.3x~0.5x是VTD-XML占用的部分),而DOM的内存占用则是原XML的5x~10x。举一个例子,如果一个XML的大小是50MB,那么用VTD-XML读取进来内存占用会在 65MB~75MB之间,而DOM的内存占用则会在250M~500MB之间。基于这个数据用DOM处理大的XML文件几乎是不可能的选择。
因此,在做xml处理的时候,必须要考虑到内存方面的限制。
(3)xml的编码问题
xml作为一种描述语言,本身会用到特殊符号来作为元描述语言,因此对于这些特殊符号要做另外的处理,否则很容易出错。一般来说,如果是真实的数据内容,都是推荐使用CDATA部件,因为只有在CDATA部件之内的文本会被解析器忽略。但是要注意处理,数据内容的字符"]]>" 或者"<![CDATA[" 。
http://dev.csdn.net/article/68/68417.shtm<<XML指南——XML CDATAXML指南——XML CDATA>>这篇文章就对这个问题作了很好的说明。
excel文件与xml文件的转化是一个指数级的函数关系,如下表所示。
excel文件大小(KB) | 转化之后的xml文件大小(KB) |
278 | 557 |
296 | 937 |
1247 | 22282 |
4287 | 236361 |
10111 | 747658 |
打开excel转换过来的xml文件,就可以看到每描述一个cell的内容,xml都要用60个字符的附加信息。如下所示。<Cell ss:StyleID="s29"><ss:Data ss:Type="String"
xmlns="http://www.w3.org/TR/REC-html40">aa</ss:Data></Cell>
因此,xml的文件的存储或者是上传,一定要做压缩处理,否则其效率是很低的。或者如果可以找到其他替代的存储或者编码格式,例如json,最好可以先考虑。在对效率不敏感的时候,xml才是一个好的选择。
(2)xml处理效率不高,对于大xml文件,无论是dom处理或者是sax处理都不是理想处理方式。
http://developer.51cto.com/art/200604/25541.htm 这篇文章对这个问题有很详细的描述。
http://cavingdeep.cnblogs.com/archive/2006/03/15/350456.html <<新兴XML处理方法VTD-XML介绍>>这篇文章有很好的分析。
基本上的xml的处理是一个很好内存的操作,现在也出现一种新的处理方式vtd-xml.如下所述。
VTD-XML的解析速度是SAX(with NULL content handler)的1.5x~2.0x。With NULL content handler的意思就是说SAX解析中没有插入任何额外的处理逻辑,也就是SAX的最高速度。
VTD-XML的内存占用是原XML的1.3x~1.5x(其中1.0x的部分是原XML,0.3x~0.5x是VTD-XML占用的部分),而DOM的内存占用则是原XML的5x~10x。举一个例子,如果一个XML的大小是50MB,那么用VTD-XML读取进来内存占用会在 65MB~75MB之间,而DOM的内存占用则会在250M~500MB之间。基于这个数据用DOM处理大的XML文件几乎是不可能的选择。
因此,在做xml处理的时候,必须要考虑到内存方面的限制。
(3)xml的编码问题
xml作为一种描述语言,本身会用到特殊符号来作为元描述语言,因此对于这些特殊符号要做另外的处理,否则很容易出错。一般来说,如果是真实的数据内容,都是推荐使用CDATA部件,因为只有在CDATA部件之内的文本会被解析器忽略。但是要注意处理,数据内容的字符"]]>" 或者"<![CDATA[" 。
http://dev.csdn.net/article/68/68417.shtm<<XML指南——XML CDATAXML指南——XML CDATA>>这篇文章就对这个问题作了很好的说明。
相关文章推荐
- [经验总结]SendMessage会等待消息处理结束吗
- Java 关于中文乱码处理的经验总结
- Android实战经验之图像处理及特效处理的集锦(总结版)
- Java 异常处理的误区和经验总结
- ANDROID实战经验之图像处理及特效处理的集锦(总结版)
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
- 经验总结08--js处理cookie
- Java 异常处理的误区和经验总结
- Java 异常处理的误区和经验总结
- JavaScript 错误处理与调试经验总结
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
- 处理bug的一些经验总结
- (转)基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
- (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
- Java异常处理的误区和经验总结
- Java 异常处理的误区和经验总结
- 基于MVC+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理
- 基于MVC+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码
- Java 异常处理的误区和经验总结
- Android实战经验之图像处理及特效处理的集锦(总结版)