Java:XML篇,使用DOM读取并解析XML
2013-01-19 08:13
666 查看
1. 描述
DOM(Document Object Model) DOM 一种独立于平台和语言的方式访问和修改一个文档的内容和结构。DOM 采用建立树形结构的方式访问 XML文档,实际上是以面向对象方式描述的文档模型。
DOM 树在内存中是持久的,程序能对数据和结构作出更改,使用起来也要简单得多。
DOM 对于特别大的文档,解析和加载整个文档可能很慢且很耗资源。
2. 示范代码
package com.clzhang.sample.xml; import java.io.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.OutputKeys; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; /** * DOM(Document Object Model) DOM 一种独立于平台和语言的方式访问和修改一个文档的内容和结构。 * DOM 采用建立树形结构的方式访问 XML文档,实际上是以面向对象方式描述的文档模型。 * DOM 树在内存中是持久的,程序能对数据和结构作出更改,使用起来也要简单得多。 * DOM 对于特别大的文档,解析和加载整个文档可能很慢且很耗资源。 */ public class DOMTest { // 读取文件测试(其输入是writeXMLFile的输出) public void parseByDOM(String filename) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File(filename)); NodeList nlDoc = doc.getElementsByTagName("doc"); for (int i = 0; i < nlDoc.getLength(); i++) { Element element = (Element)nlDoc.item(i); System.out.println(element.getNodeName() + "\tid=" + element.getAttribute("id")); for (Node node = element.getFirstChild(); node != null; node = node .getNextSibling()) { if (node.getNodeType() == Node.ELEMENT_NODE) { Element child = (Element) node; String value = child.getTextContent(); System.out.println("\t" + child.getNodeName() + "=" + value); } } System.out.println(); } } // 写入文件测试 public void writeXMLFile(String filename) throws Exception { // 创建对象结构 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.newDocument(); // 先创建根节点 Element root = doc.createElement("add"); doc.appendChild(root); // 将根元素添加到文档上 // 再创建子节点一,并加入些信息 Element element = doc.createElement("doc"); element.setAttribute("id", "1"); Element title = doc.createElement("title"); title.appendChild(doc.createTextNode("维护权益!")); element.appendChild(title); Element content = doc.createElement("content"); content.appendChild(doc.createTextNode("有一个更完善的交流平台,共建美好家园")); element.appendChild(content); root.appendChild(element); // 再创建子节点二,并加入些信息 element = doc.createElement("doc"); element.setAttribute("id", "2"); title = doc.createElement("title"); title.appendChild(doc.createTextNode("不维护权益!")); element.appendChild(title); content = doc.createElement("content"); content.appendChild(doc.createTextNode("没有一个更完善的交流平台,不共建美好家园")); element.appendChild(content); root.appendChild(element); // 输出到文件 Source source = new DOMSource(doc); FileOutputStream fos = new FileOutputStream(filename); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); Transformer tf = TransformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tf.transform(source, new StreamResult(osw)); osw.close(); fos.close(); } public static void main(String arge[]) throws Exception { long starttime = System.currentTimeMillis(); DOMTest ins = new DOMTest(); ins.writeXMLFile("bbs.xml"); ins.parseByDOM("bbs.xml"); System.out.println("运行时间:" + (System.currentTimeMillis() - starttime) + " 毫秒"); } }
相关文章推荐
- JAva使用DOM读取XML数据(解析)
- Java解析XML(一) 使用DOM读取XML文件
- Java:XML篇,使用JDOM读取并解析XML
- Java:XML篇,使用DOM4J读取并解析XML
- 【原创】使用DOM解析XML文档示例(Java)
- Java中使用Dom和Sax两种思想解析XML
- Java&Xml教程(二)使用DOM方式解析XML文件
- java使用jdom架包解析xml字符串dom原理并保存map对象
- java解析xml之一:使用SAX与DOM
- Java&Xml教程(二)使用DOM方式解析XML文件
- Java&Xml教程(二)使用DOM方式解析XML文件
- php4/5使用Dom方式读取和解析和创建XML简单教程
- JAVA 使用 DOM 解析 XML
- XML的DOM解析 Java实现 使用递归解析一个XML文档
- Java中使用DOM来解析xml文档
- Java:XML篇,使用SAX读取并解析XML数据
- 在java中使用dom解析xml的示例分析
- PHP中使用DOM读取解析XML属性值一例
- 使用java读取/解析XML数据
- JAVA操作XML一(读取):使用DOM读取XML数据的两种具体实现