博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java:XML篇,使用DOM读取并解析XML
阅读量:4708 次
发布时间:2019-06-10

本文共 4026 字,大约阅读时间需要 13 分钟。

1. 描述

  1. DOM(Document Object Model) DOM 一种独立于平台和语言的方式访问和修改一个文档的内容和结构。 
  2. DOM 采用建立树形结构的方式访问 XML文档,实际上是以面向对象方式描述的文档模型。 
  3. DOM 树在内存中是持久的,程序能对数据和结构作出更改,使用起来也要简单得多。 
  4. 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)                + " 毫秒");    }}

 

转载于:https://www.cnblogs.com/nayitian/archive/2013/01/19/2867238.html

你可能感兴趣的文章
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
arrow:让Python的日期与时间变的更好
查看>>
(转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
查看>>
Java并发编程
查看>>
Git Stash用法
查看>>