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