1. DOM(Document Object Model)
此 方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点 。 因此非常消耗系统性能 ,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。
实例:
- importjavax.xml.parsers.*;@H_404_31@
- //XML解析器接口@H_404_31@
- importorg.w3c.dom.*;@H_404_31@
- //XML的DOM实现@H_404_31@
- importorg.apache.crimson.tree.XmlDocument;@H_404_31@
- //写XML文件要用到@H_404_31@
- DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();@H_404_31@
- //允许名字空间@H_404_31@
- factory.setNamespaceAware(true);@H_404_31@
- //允许验证@H_404_31@
- factory.setValidating(//获得DocumentBuilder的一个实例@H_404_31@
- try{@H_404_31@
- DocumentBuilderbuilder=factory.newDocumentBuilder();@H_404_31@
- }catch(ParserConfigurationExceptionpce){@H_404_31@
- System.err.println(pce);@H_404_31@
- //出异常时输出异常信息,然后退出,下同@H_404_31@
- System.exit(1);@H_404_31@
- }@H_404_31@
- //解析文档,并获得一个Document实例。@H_404_31@
- Documentdoc=builder.parse(fileURI);@H_404_31@
- catch(DOMExceptiondom){@H_404_31@
- System.err.println(dom.getMessage());@H_404_31@
- catch(IOExceptionioe){@H_404_31@
- System.err.println(ioe);@H_404_31@
- //获得根节点StuInfo@H_404_31@
- ElementelmtStuInfo=doc.getDocumentElement();@H_404_31@
- //得到所有student节点@H_404_31@
- NodeListnlStudent=elmtStuInfo.getElementsByTagNameNS(@H_404_31@
- strNamespace,"student");@H_404_31@
- for(……){@H_404_31@
- //当前student节点元素@H_404_31@
- ElementelmtStudent=(Element)nlStudent.item(i);@H_404_31@
- NodeListnlCurrent=elmtStudent.getElementsByTagNameNS(@H_404_31@
- "name");@H_404_31@
- }@H_404_31@
对于读取得方法其实是很简单的,写入xml文件也是一样不复杂。
3.JDOM
JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的 。JDOM用Java的数据类型来定义操作数据树的各个节点 。JDOM的性能也很优越。
Java代码