Java解析XML文件的四种方式之DOM解析
2014-06-28 11:11
351 查看
DOM解析:
DOM解析是将xml文件全部载入到内存中,组装成一颗dom树, 然后通过节点以及节点之间的关系来解析xml文件。
当文档较大或结构复杂时,对内存需求较高,且效率不高。但DOM解析操作是基础,应该尽可能地掌握。
在DOM解析中,每一个节点中的内容实际上都是一个单独的文本节点
核心接口:
org.w3c.dom.Node:Document、Element、Attr等接口都是从该接口继承而来,在DOM树中,每一个Node接口代表一个节点
org.w3c.dom.Document:代表整个XML文档,表示整棵DOM树的根,提供了对文档数据访问和操作的入口,可访问所有元素内容
org.w3c.dom.NodeList:表示一个节点的集合
org.w3c.dom.NamedNodeMap:主要用于属性节点的表示
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.DocumentBuilder
javax.xml.transform.TransformerFactory:用于取得 一个Transformer类的实例对象
javax.xml.transform.Transformer:通过此类完成内容输出
javax.xml.transform.dom.DOMSource:用于接收Document对象
javax.xml.transform.stream.StreamResult:用于指定要使用的输出流对象,可以向文件输出,也可以向指定的输出流输出
如果程序需要进行DOM解析读取操作,需按以下步骤进行:
建立DocumentBuilderFactory:DocumentBuilderFactory
factory =
DocumentBuilderFactory.newInstance();
建立DocumentBuilder:DocumentBuilder
builder = factory.newDocumentBuilder();
建立Document:Document
doc = builder.parse("xml文件路径");
建立NodeList:NodeList
nl = doc.getElementsByTagName("节点名称");
进行信息读取。
如果需要使用DOM进行XML文件输出操作,需要使用DOM操作中提供的各个接口并手工设置各个节点的关系:
通过上面的代码可以发现,在XML创建中所有的节点(Element)都是通过Document接口创建的,
在创建时本身并没有定义任何父子节点关系,而是通过appendChild(Node newChild)方法设置的,
而且根节点addresslist也要加在Document中,这样才能完成整个一棵DOM树。
输出的文档并不会考虑格式的换行,实际使用中,格式无任何作用。
DOM解析是将xml文件全部载入到内存中,组装成一颗dom树, 然后通过节点以及节点之间的关系来解析xml文件。
当文档较大或结构复杂时,对内存需求较高,且效率不高。但DOM解析操作是基础,应该尽可能地掌握。
在DOM解析中,每一个节点中的内容实际上都是一个单独的文本节点
核心接口:
org.w3c.dom.Node:Document、Element、Attr等接口都是从该接口继承而来,在DOM树中,每一个Node接口代表一个节点
org.w3c.dom.Document:代表整个XML文档,表示整棵DOM树的根,提供了对文档数据访问和操作的入口,可访问所有元素内容
org.w3c.dom.NodeList:表示一个节点的集合
org.w3c.dom.NamedNodeMap:主要用于属性节点的表示
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.DocumentBuilder
javax.xml.transform.TransformerFactory:用于取得 一个Transformer类的实例对象
javax.xml.transform.Transformer:通过此类完成内容输出
javax.xml.transform.dom.DOMSource:用于接收Document对象
javax.xml.transform.stream.StreamResult:用于指定要使用的输出流对象,可以向文件输出,也可以向指定的输出流输出
如果程序需要进行DOM解析读取操作,需按以下步骤进行:
建立DocumentBuilderFactory:DocumentBuilderFactory
factory =
DocumentBuilderFactory.newInstance();
建立DocumentBuilder:DocumentBuilder
builder = factory.newDocumentBuilder();
建立Document:Document
doc = builder.parse("xml文件路径");
建立NodeList:NodeList
nl = doc.getElementsByTagName("节点名称");
进行信息读取。
如果需要使用DOM进行XML文件输出操作,需要使用DOM操作中提供的各个接口并手工设置各个节点的关系:
// 取得DocumentBuilderFactory类的对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ; // 取得DocumentBuilder类的对象 DocumentBuilder build = factory.newDocumentBuilder() ; Document doc = build.newDocument() ; // 创建一个新的XML文档 Element addresslist = doc.createElement("addresslist") ; Element linkman = doc.createElement("linkman") ; Element name = doc.createElement("name") ; Element email = doc.createElement("email") ; // 设置节点内容 name.appendChild(doc.createTextNode("Java解析")) ; email.appendChild(doc.createTextNode("test@163.com")) ; // 该设置各个节点的关系 linkman.appendChild(name) ; // name是linkeman的子节点 linkman.appendChild(email) ; // email是linkman的子节点 addresslist.appendChild(linkman) ; doc.appendChild(addresslist) ; TransformerFactory tf = TransformerFactory.newInstance() ; Transformer t = tf.newTransformer() ; t.setOutputProperty(OutputKeys.ENCODING, "GBK") ; // 处理中文的 DOMSource source = new DOMSource(doc) ; // 准备输出文档 StreamResult result = new StreamResult(new File("d:"+File.separator+"output.xml")) ; t.transform(source,result) ;
通过上面的代码可以发现,在XML创建中所有的节点(Element)都是通过Document接口创建的,
在创建时本身并没有定义任何父子节点关系,而是通过appendChild(Node newChild)方法设置的,
而且根节点addresslist也要加在Document中,这样才能完成整个一棵DOM树。
输出的文档并不会考虑格式的换行,实际使用中,格式无任何作用。
相关文章推荐
- JAVA解析XML文件四种方式
- java解析xml文件四种方式 范例
- Java解析XML文件的DOM和SAX方式
- Java解析XML文件的DOM和SAX方式
- java解析xml文件四种方式
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- Java解析XML文件的四种方式之SAX解析
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- Java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式