xml解析分为SAX,DOM,JDOM,DOM4J四种:
dom:把xml文件读到内存中去,并生成树型结构,以后访问只要在树节点中找就行,由于要把xml解析到内存中去,所以不能解析操作10M的文件
sax:基于事件驱动,文档的开始结束,元素开始结束节点遍历,对文档只能遍历一次,但能解析大型xml文件,速度比dom快,欠缺的是用SAX 解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
jdom:利用"Java 规范请求 JSR-102",与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性。第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用。
dom4j:使用接口和抽象基本类方法,大量使用了 API 中的 Collections 类,因为JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出,而各方面dom4j都由于他们,现在许多开源项目都使用了dom4j,比如hibernate对xml的解析.
但到目前为止我还是热衷用dom解析xml,解析步骤如下:
//创建文档构建工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//创建文档构建器
DocumentBuilder builder=factory.newDocumentBuilder();
//创建文档对象,解析指定的文件
Document doc = builder.parse(new File(fileName));
//根据tagName创建节点列表
NodeList nl = doc.getElementsByTagName(tagName);
//循环遍历
for (int i=0;i<nl.getLength();i++){
String str = doc.getElementsByTagName(tagName).item (i).getFirstChild ().getNodeValu();
}
详情参考:http://www.it.com.cn/f/edu/053/27/93819.htm