XML使用DOM操作

DOM 文档对象模型
  基于XML文档树结构解析
  适用于多次访问的xml文档
  特点:比较消耗资源
  1).Document对象
    NodeList getElementsByTagName(String name):指定节点名称的元素集合,返回NodeList对象
    Element getDocumentElement():
  2).NodeList对象
    指包含了一个或者多个节点(Node)的列表.
    getLength():返回列表的长度.
    item(int index):返回指定位置的Node对象
  3).Node对象
    getChildNodes():包含此节点的所有子节点的NodeList
    getFirstChild():如果节点存在子节点,则返回第一个子节点
    getLastChild():如果节点存在子节点,则返回最后一个子节点
    getNextSibling():返回在DOM树中这个节点的下一个兄弟节点
    getPreviousSibling():返回在DOM树中这个节点的上一个兄弟节点
    getNodeName():返回节点的名称
    getNodeValue():返回节点的值
    getNodeType():返回节点的类型
  4).Element对象
    Node的子对象
    getAttribute(String attributename):返回标签中给定属性名称的属性的值
    getElementsByTagName(String name):返回具有给定标记名称的所有后代Elements的NodeList

    if (typeNode.getNodeType()==Node.ELEMENT_NODE):判断是否为元素节点

    //添加子节点
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db;
        try {
            db = dbf.newDocumentBuilder();
            Document document = db.parse("src/com/xml/PhoneInfo.xml");
            //创建Brand节点
            Element element = document.createElement("Brand");
            element.setAttribute("name", "MOTO");
            //创建Type节点
            Element typElement = document.createElement("Type");
            typElement.setAttribute("name", "摩托罗拉");
            //创建Item节点
            Element itemeElement = document.createElement("Item");
            //添加父子关系
            typElement.appendChild(itemeElement);
            element.appendChild(typElement);
            Element phoneElement = (Element)document.getElementsByTagName("PhoneInfo").item(0);
            phoneElement.appendChild(element);
            //保存xml文件
            TransformerFactory tff = TransformerFactory.newInstance();
            try {
                Transformer transformer = tff.newTransformer();
                DOMSource domSource = new DOMSource(document);
                //设置编码类型
                transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
                StreamResult result = new StreamResult(new FileOutputStream("src/com/xml/PhoneInfo.xml"));
                //把DOM树转换成XML文件
                transformer.transform(domSource, result);
            } catch (TransformerConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     //修改子节点
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db;
        try {
            db = dbf.newDocumentBuilder();
            Document document = db.parse("src/com/xml/PhoneInfo.xml");
            NodeList nodeList = document.getElementsByTagName("Type");
            for (int i=0;i<nodeList.getLength();i++){
                Element element = (Element)nodeList.item(i);
                String brandName = element.getAttribute("name");
                System.out.println("修改前:"+brandName);
                if ("iphone4".equals(brandName)){
                    element.setAttribute("name", "iPad");
                }
            }
            //保存xml文档
            TransformerFactory tff = TransformerFactory.newInstance();
            try {
                Transformer transformer = tff.newTransformer();
                DOMSource domSource = new DOMSource(document);
                //设置编码类型
                transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
                StreamResult result = new StreamResult(new FileOutputStream("src/com/xml/PhoneInfo.xml"));
                //把DOM树转换成XML文件
                transformer.transform(domSource, result);
            } catch (TransformerConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    //删除节点
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse("src/com/xml/PhoneInfo.xml");
            NodeList list = document.getElementsByTagName("Brand");
            for (int i=0;i<list.getLength();i++){
                Element element = (Element)list.item(i);
                String brandName = element.getAttribute("name");
                if ("MOHAHA".equals(brandName)){
                    element.getParentNode().removeChild(element);
                }
            }
            //保存文件
            TransformerFactory tff = TransformerFactory.newInstance();
            try {
                Transformer transformer = tff.newTransformer();
                DOMSource domSource = new DOMSource(document);
                //设置编码类型
                transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
                StreamResult result = new StreamResult(new FileOutputStream("src/com/xml/PhoneInfo.xml"));
                //把DOM树转换成XML文件
                transformer.transform(domSource, result);
            } catch (TransformerConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

设置缩进:

  ①
  TransformerFactory tff = TransformerFactory.newInstance();
  tff.setAttribute("indent-number", 4);

  ②
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  StreamResult result = new StreamResult(new OutputStreamWriter(new FileOutputStream("src/com/xml/Phone.xml"),"utf-8"));

时间: 2024-10-25 23:40:08

XML使用DOM操作的相关文章

XML小项目------DOM操作联系人(非图形界面版)

本例分了两层的模式,即数据层和表现层 公共类:DocumentFactory.java package cn.hncu.contact.common; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.trans

PHP通过DOM操作XML

PHP XML操作类DOMDocument属性及方法注意大小写一定不能弄错.属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definition 以DTD或XML模式给出的节点的定义(只读) Doctype 指定文档类型节点(只读) documentElement 返回文档的根元素(可读写) firstChild 返回当前节点的第一个子节点(只读) Implementation 返回XMLDOM

DOM操作XML实例

DTD如下: <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT 书籍列表 (计算机书籍)* > <!ELEMENT 计算机书籍 ((书名,价格)+,作者+,简介,tel,hr)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 价格 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT

用java操作XML文件(DOM解析方式)

XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DOM解析方式 在java工程中导入dom4j.jar包. (一)用java读XML文件 <1>创建SAXReader对象. RAXReader reader=new RAXReader(); <2>调用RAXReader的Document read(File file)方法,获取xml文

java DOM 操作xml

1 代码如下: 1 package dom.pasing; 2 3 import java.io.IOException; 4 import java.io.StringWriter; 5 6 import javax.xml.parsers.DocumentBuilder; 7 import javax.xml.parsers.DocumentBuilderFactory; 8 import javax.xml.parsers.ParserConfigurationException; 9 1

jquery中的DOM操作

DOM操作分为:DOM核心.HTML-DOM.CSS-DOM 1.节点操作 查找 查找元素节点:jquery选择器 查找属性节点:attr("")方法,参数为要查询的属性的名字 创建 创建元素节点:$("html")方法,参数为HTML标记字符串,如:<p></p> 注意:(1)动态创建的新元素节点不会被自动添加到文档中,需要用其他方法插入文档中(2)创建元素时注意标签闭合,可以用$("<p></p>&quo

Jquery基础之DOM操作

 一.jQuery对象与Dom对象的区别 一直以来对于通过jQuery方式获取的对象使不能直接使用JavaScript的一些方法的,开始的时候不理解,现在此案知道,原来jQuery获得的对象并不和我们平时使用getElementById获得的对象是一样的对象.所以一些新手就很迷惑,为什么${”#Element”}不能直接innerHTML,这就是原因所在,解决方式请看下文. jQuery对象与dom对象的转换只有jquery对象才能使用jquery定义的方法.注意dom对象和jquery对象是有

xml、文件操作功能类

我一个项目中用到的,里面的方法不是太通用,但是可以从里面找到一些有用的代码,以后慢慢添补更新: FileUtil.xml 1 package com.novel.util; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import

html学习-DOM操作

1.dom介绍 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来.DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容. 1.1dom元素查找 节点父.子和同胞 节点树中的节点彼此拥有层级关系. 父(parent).子(child)和同胞(sibling)等术语用于描述这些关系.父节点拥有子