一、本次总结用到的xml文本

1、    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
        <!-- 引进dtd文件的标签 --><!-- <!DOCTYPE 书架 SYSTEM "book.dtd"> -->
        <书架>
            <书 ISBN="a" 出版社="人民出版社">
                <书名>三国演义</书名>
                <作者>罗贯中</作者>
                <批发价>500¥</批发价>
                <售价>100$</售价>
            </书>
            <书 ISBN="b" 出版社="人民出版社">
                <书名>西游记</书名>
                <作者>吴承恩</作者>
                <售价>55¥</售价>
            </书>
        </书架>
二、利用jaxp进行DOM的解析方法
    1、首先获得解析工厂DOcumentBuilderFactory
        javax.xml.parsers 类
        
        **DocumentBuilderFactory:定义工厂API,使应用程序能够从xml文档获取生成DOM对象的解析器。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        
        **newInstance()方法:获取DocumentBuilderFactory的新实类。此static方法创建一个新的工厂实类。
    2、得到解析器DocumentBuilder
        类 DocumentBuilder
        **定义API,使其从xml文档中DOM文档实类。应用程序员可以从xml获取一个Document
        
        DocumentBuilder builder = factory.newDocumentBuilder();
        
        **newDocumentBuilder:使用当前配置的参数创建一个新的DocumentBuilder实类。
        
    3、解析制定的xml文档。得到代表内存的Dom树的Document对象
        
        Document document = builder.parse("src/book.xml");
        **builder.parse()方法:将给定输入源的内容解析为一个xml文档。并返回一个新的DOM document对象

三、得到某个具体节点的内容:列如:打印第二本书的作者
    1、根据标签的内容获取所有的作者名称
        NodeList nodelist=document.getElementsBytagName()
        NodeList:接口提供对节点的有序集合的抽象
    2、按照索引获取第二个作者元素
        Node node=nodelist.item(1);
    3、打印该元素的文本
        String text=node.getTextContent();
        System.out.println(text);
四、遍历所有的元素节点:打印元素的节点名称
    1、判断当前节点是否为一个元素节点
        short nd=node.getNodeType();
        if(nd==Node.ELEMENT_NODE){
        如果是:打印元素节点的名称
        system.out.println(node.getNodeName());
        }
        如果不是找到他们的孩子节点
        NodeList nodelist=node.getChildNodes();
        int length=nodelist.getLength();//获取孩子节点的长度
        for(int 1=0;i<length;i++){
        //遍历孩子节点进行递归
        Node n=nodelist.item(i);
        test2(n);
        }
五、修改元素节点的主题内容
    1、列如:找到第一本书的售价
        NodeList nodelist = docuement.getElementsByTagName("售价");
    2、设置其主题内容
        Node no=nodelist.item(0);//得到他的节点
        no.setTextContent("100$");//设置他的主题内容
    3、把内存中的document树写回到xml中
        TransformerFactory  factory = TransformerTactory.newInstance();
        Transformer tr = factory.newTransformer();
        tr.transformer(new DOMSource(doument),new StreamResult("src/book.xml"));
六、向指定元素节点中增加子元素节点
    1、创建一个新元素并设置其内容
        Element element = Element.createElement("内部价");
        设置他的文本内容
        element.setTexstContent("300$");
    2、找到第一本书
        NodeList nodelist = document.getElementsByTagName("书");
        Node first =nodelist.item(0);
    3、把新节点挂到第一本书上
        first.appendChild(element)
    4、把内存中的document树写会到xml中
        TransformerFactory factory = TransformerFactory.newInstace();
        Transformer tr=factory.newTransformer();
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
七、向指定的元素节点上增加同级元素节点:列如:在第一本书的售价前面添加批发价
    1、创建并设置其主题内容
        Element element = documcnet.createElement("批发价");
        element.setTextContent("500$");
    2、找到第一本书的售价
        NodeList nodelist = document.getElementsByTagName("售价");
        Node node=nodelist.item(0);
     3、在售价的前面添加新建的元素:
        ***增加子节点,一定要使用父元素进行
        node.getParentNode().insertBefore(element,node);
    4、把内存中的document树写回到xml中
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer tr = factory.newTransformer()
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
八、删除指定元素的节点
    1、删除子节点需要父节点进行删除
        列如:找到内部价进行删除
        NodeList nodelist = document.getElementsByTagName("内部价");
         Node node = nodelist.item(0);
         node.getPraentNode().removeChhild(n);
    2、把内存的document树写回到xml中
        TransformerFactory factory=TransformerFactory.newInstance();
        Transformer tr=factory.Transformer();
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
九、操作xml元素属性:打印第一本书的出版社
    1、首先得到第一本
        Node node = document.getElementsByTagName("书").item(0);
    2、打印指定属性的值
        Element e = (Element)n;
        system.out.println(e.getAttribute("出版社"));

Document树的解析方法的更多相关文章

  1. XML解析之DOM详解及与SAX解析方法的比较

    XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...

  2. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  3. XML的四种解析方法

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6646572.html  XML文档以层级标签的形式来组织数据,多用于配置文件.存储静态数据.交换数据.     ...

  4. XML 的解析方法

    四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构.     * 优点:整个文档树在内存中,便 ...

  5. document的属性与方法小结

    document节点是文档的根节点,每张网页都有自己的document节点.属性:1:document.doctype----它是一个对象,包含了当前文档类型 (Document Type Decla ...

  6. Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python

    Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python 1.1. Sql语法树 ast 如下图锁死1 2. SQL语句解析的思路和过程3 ...

  7. C#使用表达式树动态调用方法并实现99乘法表

    我们在使用C#编程的时候,经常使用反射来动态调用方法,但有时候需要动态的生成方法,下面介绍使用表达式树的方式来自动生成方法,并调用. 首先需要说明什么是表达式,熟悉Linq的程序猿都用过类似于下面的代 ...

  8. linux设备驱动程序-i2c(2)-adapter和设备树的解析

    linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲 ...

  9. 逗号分割符--字段中含逗号等情况的解析方法Java实现

    最近在处理文本字符串时,没一行数据都是按照逗号分割的,每个字段值一般情况是带有双引号的,但是有的字段值里面还包含逗号,甚至有的字段就没有双引号,这个分割起来就有点麻烦了 下面说一下我解决方法,如果谁有 ...

随机推荐

  1. MRPT笔记——使用编译好的MRPT库建立VS2013项目

    接着上一篇<MRPT在VS2013中的配置>,下面接收如何使用编译好的MRPT建立工程项目. 一.设置环境变量 上一篇中,配置MRPT时,使用到了几个相关库,opencv.zlib.wxW ...

  2. Windows平台下Git服务器搭建

    第一步:下载Java,下载地址:http://www.java.com/zh_CN/ 第二步:安装Java.安装步骤不再详述. 第三步:配置Java环境变量. 右键”计算机” => ”属性” = ...

  3. robots笔记以免忘记

    html头部标签写法: <meta name="robots" content="index,follow" /> content中的值决定允许抓取 ...

  4. Scipy学习笔记 矩阵计算

    Scipy学习笔记 非本人原创  原链接 http://blog.sina.com.cn/s/blog_70586e000100moen.html 1.逆矩阵的求解 >>>impor ...

  5. Dapper学习笔记(5)-存储过程

    一.无参存储过程 第一步:创建一个不带参数的存储过程,代码如下: CREATE PROCEDURE [dbo].[QueryRoleNoParms] AS BEGIN SELECT * FROM T_ ...

  6. python3下载远程代码并执行

    第一步: 先在gist之类的网站上贴上代码,目的不是高亮,而可以raw的形式获取代码,这样可以省掉处理html的时间,我这里用的是pasteraw: 远程上的代码:http://cdn.pastera ...

  7. 华为手机调试显示log日志

    华为手机默认状态手机log为关闭状态,所以看不到详细错误信息. 手机拨号*#*#2846579#*#*,进入projectmenu--后台设置--LOG设置--LOG开关--打开 勾选AP日志   C ...

  8. 排序系列 之 简单选择排序及其改进算法 —— Java实现

    简单选择排序算法: 基本思想: 在待排序数据中,选出最小的一个数与第一个位置的数交换:然后在剩下的数中选出最小的数与第二个数交换:依次类推,直至循环到只剩下两个数进行比较为止. 实例: 0.初始状态 ...

  9. Oracle 数据库--一个用户同步的sql

    用户同步的sql: insert into crm_customer_user ,username,,,,,id, from sys_user where username not in (selec ...

  10. flask SQLAlchemy中一对多的关系实现

    SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...