对与DOM来说 ,一切都是节点Node;

②Document可以看成一个节点,Element可以看成一个节点,Text可以看成一个节点,

封装出来的对象都可以看成节点Node;

③在JDK中,Node是Doucument(文档),Element(标签元素),Text(文本对象), Attr(属性对象)的父接口;

原生API解析XML

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C:\\Users\\Administrator\\eclipse-workspace\\day35\\ghhj\\contacts.xml");
        Element contact= doc.getDocumentElement();//根元素

NodeList names = contact.getElementsByTagName("name");
        Element name = (Element) names.item(1);
        System.out.println(name.getTextContent());

或     NodeList linkmans = doc.getElementsByTagName("linkman");
             linkmans.item(1).getElementsByTagName("name");

Element linkman = (Element) linkmans.item(1);

2  把第一个联系人的邮箱改掉

public void modify()throws Exception {

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C:\\Users\\Administrator\\eclipse-workspace\\day35\\ghhj\\contacts.xml");
        Element contact= doc.getDocumentElement();//根元素

Element contact = doc.getDocumentElement();
       
        Element linkman = (Element) (contact.getElementsByTagName("linkman").item(0));
    
        Element email= (Element)(linkman.getElementsByTagName("email").item(0));
      
        email.setTextContent("110110@qq.com");
        
   /////使用TransFormer类 把 内存中的数据 同步到xml里面去;
        Transformer trant = TransformerFactory.newInstance().newTransformer();
    
        Source source = new DOMSource(doc);
        Result result= new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
       
        trant.transform(source,result);
    }

//添加一个联系人信息
    @Test
    public void add()throws Exception {
        //拿到document对象
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //获取根节点元素
        Element contact = doc.getDocumentElement();
        //创建所有节点对象
        Element linkman = doc.createElement("linkman");
        Element name = doc.createElement("name");
        name.setTextContent("李四");
        Element email = doc.createElement("email");
        email.setTextContent("110@qq.com");
        Element address = doc.createElement("address");
        address.setTextContent("安徽省");
        Element group = doc.createElement("group");
        group.setTextContent("111111");
        //将子标签添加到linkman标签内
        linkman.appendChild(name);
        linkman.appendChild(email);
        linkman.appendChild(address);
        linkman.appendChild(group);
        //将liakman添加到contact标签内
        contact.appendChild(linkman);
        
        //执行doc对象与xml文件同步
        //1.获取Transformer对象
        Transformer trant = TransformerFactory.newInstance().newTransformer();
        //2.创建Source对象(绑定doc对象)和Result对象(绑定文件对象)
        Source xmlSource = new DOMSource(doc);
        Result outputTarget = new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //3.将doc对象同步到xml文件中
        trant.transform(xmlSource, outputTarget);
    }

// 删除第三个联系人;
    @Test
    public void delete()throws Exception {
        //拿到document对象
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //获取根节点元素
        Element contact = doc.getDocumentElement();
        //获取所有linkman元素
        NodeList linkmans = contact.getElementsByTagName("linkman");
        //将contact的第三个子节点(linkman)删除
        contact.removeChild(linkmans.item(2));

//执行doc对象与xml文件同步
        //1.获取Transformer对象
        Transformer trant = TransformerFactory.newInstance().newTransformer();
        //2.创建Source对象(绑定doc对象)和Result对象(绑定文件对象)
        Source xmlSource = new DOMSource(doc);
        Result outputTarget = new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //3.将doc对象同步到xml文件中
        trant.transform(xmlSource, outputTarget);
    }
}

xml文档对象模型doc的更多相关文章

  1. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  2. 【Win10 应用开发】自适应Toast通知的XML文档结构

    老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6 ...

  3. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

  4. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

  5. C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)

    XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子 ...

  6. XML——对XML文档的创建与增删改查

    一.创建的第一种方式  //1.创建一个XML文档 XmlDocument doc = new XmlDocument(); //2.创建第一行描述信息 XmlDeclaration dec = do ...

  7. org.w3c.dom(java dom)解析XML文档

    位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...

  8. 精讲 org.w3c.dom(java dom)解析XML文档

    org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...

  9. xml.dom——文档对象模型API

    文档对象模型,或者“DOM”,是一个跨语言API的World Wide Web Consortium(W3C)来访问和修改XML文档.DOM的实现提供了一个XML文档树结构,或允许客户机代码从头开始建 ...

随机推荐

  1. 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers

    题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...

  2. MySQL5.6的4个自带库详解

    MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...

  3. vue中导入外面文件(css,js)方式

    有时我们需要导入外面的css文件(例如reset.css文件,bootstrap.css,jQuery.js文件),通常可通过import "name.css"的形式 对于rese ...

  4. iOS 精简Controlelr代码的两个方法

    MVC是苹果推荐使用的iOS APP架构.后来又有MVVM,MVP等架构出现.主要目的是让业务逻辑.展示.数据各个层级解耦.实现最大程度上的代码复用. 对MVC这种架构来说,随着APP中模的增多,控制 ...

  5. 将DOS格式的shell脚本转为UNIX格式

    shell脚本是UNIX格式,在修改其中内容时,务必保持UNIX格式.UE编辑器打开时,会询问是否转为DOS格式,请点否.如果修改完成后,不能确认是否为DOS格式,可以使用UE文件菜单下的Conver ...

  6. Chrome中安装Firebug插件

    Chrome中的Firebug插件:Firebug Lite 1.Firebug Lite下载:http://chromecj.com/web-development/2015-05/471/down ...

  7. 新建oracle用户

    1.oracle 账户登录linux:2.如果存在多个切换实例:命令:export ORACLE_SID=实例名:如:export ORACLE_SID=utf81863.切换至管理员账户:sqlpl ...

  8. /etc/passwd- 和/etc/shadow-文件

    今天偶尔看到系统里有/etc/passwd- 和/etc/shadow-文件,经测试只要执行过系统的用户操作命令就会产生,如deluser.passwd.chpasswd.adduser等命令,应该是 ...

  9. Python库源码学习1:Flask之app.run

    先列出app.run()实现的功能,我们以debug=True的情况下进行分析. 1. web服务器,处理http请求 2. 当代码修改后,重启服务器 那么app.run()是如何实现这两个功能的呢? ...

  10. JavaScript学习笔记--语法

    代码风格: 每句结尾不用加分号: 单行注释用//,多行注释用/*...需要注释掉的代码....*/ 严格区分大小写 优雅的代码需要注意锁进 基础知识: Number:JavaScript不区分整数和浮 ...