快速有效的解析大型XML文件
2011-07-20 21:25
344 查看
和老师做研究也快一年了。使我认识比较深的是对XML的解析和图论。由于我们做的试验是通过XML来生成图,于是摆在我们面前的首要问题是如何解析XML。
在此之前曾经用过DOM4J来解析过XML,那是在给研究生的学姐作业Webservice的时候用的,用来解析wsdl文件,来实现简单的动态的服务调用。那个wsdl最多也就几兆,大部分可以将内容放在内存中。而现在解析的最小的XML文件都有100M,用那种比较简单的解析方式是无法快速解析的。我们知道JAVA解析xml有以下几种方法:jdom、dom4j、dom、sax。还有一种是自己写一个解析器!这个我也写过,能够解析一般的XML文件,可是通用性不是很好就没做太多的研究。我们知道前面两种都是比较好用的,如jdom,dom4j可以使用xpath规则的语言来读取xml中指定的内容。但是它们都是和dom一样,都是将整个xml文件读入内容中在对xml进行解析,这样的解析方式对与大型的xml是不合适的。因为受到内存的限制。
那么怎么解析大型的xml数据呢?我想大家看到现在也应该知道是那个,就是sax。sax解析xml它是以流的形式将xml内容读入内存中,我们使用sax解析xml是可以继承DefaultHandler类,也可以实现相应的接口,对其中的五个方法进行重写,分别是:
有上面可以看出sax解析xml是更具xml内容的组成结构来进行解析的,每个方法代表的是xml结构中的一个成分,所以可以灵活的运用,来对xml进行解析。通过试验表明sax解析200m的XML文件只需几十秒的时间(是在我的个人电脑上)。
希望这篇文章能给初次借出对大型XML文件进行解析的人带来一定的帮助,从而避免我的弯路。谢谢阅读本文......
在此之前曾经用过DOM4J来解析过XML,那是在给研究生的学姐作业Webservice的时候用的,用来解析wsdl文件,来实现简单的动态的服务调用。那个wsdl最多也就几兆,大部分可以将内容放在内存中。而现在解析的最小的XML文件都有100M,用那种比较简单的解析方式是无法快速解析的。我们知道JAVA解析xml有以下几种方法:jdom、dom4j、dom、sax。还有一种是自己写一个解析器!这个我也写过,能够解析一般的XML文件,可是通用性不是很好就没做太多的研究。我们知道前面两种都是比较好用的,如jdom,dom4j可以使用xpath规则的语言来读取xml中指定的内容。但是它们都是和dom一样,都是将整个xml文件读入内容中在对xml进行解析,这样的解析方式对与大型的xml是不合适的。因为受到内存的限制。
那么怎么解析大型的xml数据呢?我想大家看到现在也应该知道是那个,就是sax。sax解析xml它是以流的形式将xml内容读入内存中,我们使用sax解析xml是可以继承DefaultHandler类,也可以实现相应的接口,对其中的五个方法进行重写,分别是:
1、public void startDocument() //该方法是解析xml的入口,即开始对XML解析 2、public void startElement(String uri, String localName, String qName,Attributes attributes)//这是对xml一个element进行解析,如:<element attribute='value'>text</element> 其中两个参数是最常用的,一个就是attributes和qName,此处的attributes是一个集合,可以将多个属性封装在其中, 可以通过attributes.getValue(0)来获得此处的attribute的value,而qName是此处的element,也就是元素名 3、public void characters(char[] ch, int start, int length)//该方法是获得元素间的text文本内容,可以通过new String(ch, start, length);来获得, 4、public void endElement(String uri, String localName, String qName)//此处是一个元素的结束方法,如此处的</element>时则调用该方法 5、public void endDocument() //该方法是在解析完xml文件后调用该方法
有上面可以看出sax解析xml是更具xml内容的组成结构来进行解析的,每个方法代表的是xml结构中的一个成分,所以可以灵活的运用,来对xml进行解析。通过试验表明sax解析200m的XML文件只需几十秒的时间(是在我的个人电脑上)。
希望这篇文章能给初次借出对大型XML文件进行解析的人带来一定的帮助,从而避免我的弯路。谢谢阅读本文......
相关文章推荐
- 快速有效的解析大型XML文件 .
- Pugixml一种快速解析XML文件的开源解析库
- 如何快速解析100M的xml文件
- Pugixml一种快速解析XML文件的开源解析库《转载》
- Dom4j解析xml文件的简单快速用法
- Qt实现SAX2方式解析XML文件(简单有效、老少皆宜,200MB大小4-7层的XML解析只需要30s)
- 跨平台支持的WebService接口Demo,利用xstream快速解析和生成xml文件
- Pugixml一种快速解析XML文件的开源解析库
- 读取xml文件,快速入门
- SSE图像算法优化系列二十:一种快速简单而又有效的低照度图像恢复算法。
- grails解析xml文件
- Flask系列----快速入门实战解析(上篇)
- xml文件的dom解析
- iOS下载大型文件原理解析三
- 【技术贴收集】开源项目Html Agility Pack实现快速解析Html
- JS操作XML实例总结(加载与解析XML文件、字符串)
- Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解
- 在C++程序中利用TinyXML解析XML文件
- 使用PULL解析XML文件