原文:http://www.jb51.cc/article/p-vhbgfbbe-ke.html
1,xml文件的读取
读取xml文件的方式有两种,一种是面向模型的DOM方式,一种是面向事件的SAX方式
DOM方式原理:一次性的将xml文档加入内存,在内存中形成一颗dom树,然后通过语言对树的节点进行操作。
显然这种操作查找元素快,但是一次性的将文件加载进来,要是小还行,文件大的时候会增大内存负担的,因此这种方式最好是解析小的xml文件的时候用
SAX方式原理:边读边解析,按照从做往右从上往下的顺序解析。
由于解析过的节点不能再次利用,要想使用还得再次解析,所以效率相对来说比较低,但只有事件触发了才会去读取文件,所以内存不会很大。
两种方式,各有优缺点,谁也不能代替谁,举个简单的例子吧,就像生活中的自行车无法取代汽车,汽车无法取代自行车一样,两者各有优势。根据具体需求选择。
DOM实现:
- importjava.io.File;
- importjavax.xml.parsers.DocumentBuilder;
- importjavax.xml.parsers.DocumentBuilderFactory;
- importorg.w3c.dom.Document;
- importorg.w3c.dom.Node;
- publicclassdom{
- publicstaticvoidmain(Stringargs[])throwsException{
- //创建文件解析工厂
- DocumentBuilderFactorydfactory=DocumentBuilderFactory.newInstance();
- //使用工厂创建文件解析类
- DocumentBuilderbuilder=dfactory.newDocumentBuilder();
- //开始解析文件,将文件加载进内存,形成dom树
- Documentdocument=builder.parse(newFile("test.xml"));
- //获取根节点并打印出来
- Noderootn=document.getFirstChild();
- System.out.println(rootn.getNodeName());
- }
- }
SAX实现: