dom方式解析
  根据XML的层级结构在内存中分配一个树形结构,把XML的标签、属性和文本都封装成对象
  优点:如果很方便实现增删改操作
  缺点:如果文件过大,会造成内存溢出
 
sax方式解析
  采用事件驱动,边读边解析
  从上到下,一行一行的解析,解析到某一个对象,返回对象名称
  优点:如果文件过大,不会早晨该内存溢出,方便实现查询的操作
  缺点:不能实现增删改操作
 
jaxp解析器在jdk的javax.xml.parsers包里面
  四个类,分别针对dom和sax解析使用的类
  dom:
    DocumentBuilder:解析器类
      通过DocumentBuilderFactory.newDocumentBuilder()获取
      parse("xml路径")返回的是Document接口,父接口为Node
 
  Document中的方法
    getElementsByTagName(String tagName)
      得到标签,返回集合 NodeList
    createElement(String tagName)
      创建标签
    createTextNode(String data)
      创建文本
    appendChild(Node new Child)
      把文本添加到标签下面
    removeChild(Node oldChild)
      删除节点
    getParentNode()
      获取父节点
    NodeList接口
      getLength() 得到集合的长度
      item(int index) 下标取到具体的值
      getNodeName() 获取节点名称
      getTextContent() 获取节点内容
 
  DocumentBuilderFactory:解析器工厂
    通过DocumentBuilderFactory.newInstance()获取
 
  sax:
    SAXParserFactory:解析器工厂
      通过SAXParserFactory.newInstance()获得
    SAXParser:解析器类
      通过SAXParserFactory.newSAXParser()获得
 
      parse(File f, DefaultHandler dh)
        f xml路径
        dh 自动执行
          startElement(String uri, String localName, String qName, Attributes attributes)
          characters(char[] ch, int start, int length)
          endElement(String uri, String localName, String qName)
          当解析到开始标签时,执行startElement(),返回qName标签名称
          当解析到文本内容时,执行characters(),通过String的构造方法返回内容的那个解析到结束标签时,执行endElement(),返回qName标签名称
        创建一个类继承DefaultHandler,并重写3个方法
 
使用dom4j解析
  获取Document接口
    SAXReader reader = new SAXReader();
    Document document = reader.read(path);
  Document的父接口是Node
    getRootElement():获取根节点,返回Element
  Element是一个接口,父接口为Node
    getParent():获取父节点
    addElement():添加标签
 
dom4j支持xpath操作
  可以直接获取到某个元素
  语法:
    /AAA/BBB/CCC:表示一层一层的,AAA下的BBB下的CCC
    //BBB:所有的BBB
    //*:所有的元素
    //BBB[1]:第一个BBB元素
    //BBB[last()]:最后一个BBB元素
    //@id:有id属性的元素
    //BBB[@id]:有id属性的BBB元素
    //BBB[@id='b1']:id属性值为b1的BBB元素
  dom4j默认不支持xpath,需要引入jaxen的jar包
  selectNode() 查询节点集合,返回List集合
  selectSingleNode() 查询单个节点,返回Node接口

XML的解析方式(Java)的更多相关文章

  1. XML的解析方式(DOM、SAX、StAX)

    (新)  XML的解析方式(DOM.SAX.StAX) 博客分类: XML   一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree ...

  2. xml的解析方式的简介

    xml的解析的简介(写到java代码) *xml是一个标记型文档 *js使用dom解析标记型文档? -根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象 -do ...

  3. Android:XML简介 & 解析方式对比(DOM、SAX、PULL)

    目录   示意图 1. 定义 XML,即 extensible Markup Language ,是一种数据标记语言 & 传输格式 2. 作用 对数据进行标记(结构化数据).存储 & ...

  4. 浅谈 Java Xml 底层解析方式

    XML 使用DTD(document type definition)文档类型来标记数据和定义数据,格式统一且跨平台和语言,已成为业界公认的标准. 目前 XML 描述数据龙头老大的地位渐渐受到 Jso ...

  5. Java对XML文件解析方式之一_SAX

    SAX(org.xml.sax) Simple API for XML,以事件的形式通知程序,对Xml进行解析.   SAX技术的介绍:SAX是一种以事件驱动的XML api,由它定义的事件流可以指定 ...

  6. 四种xml的解析方式

    这篇文章是我上网找资料,加上自己总结了一些而得 资料来源: http://www.cnblogs.com/allenzheng/archive/2012/12/01/2797196.html http ...

  7. 基于底层的 XML 的解析方式详解

    在上一篇博客中,我们介绍了什么是 XML ,http://www.cnblogs.com/ysocean/p/6901008.html,那么这一篇博客我们介绍如何来解析 XML . 部分文档引用:ht ...

  8. 黑马day01 xml 的解析方式

    XML编程:利用java程序去增删改查(CRUD)xml中的数据 解析思想: dom解析 sax解析 基于这两种解析思想市面上就有了非常多的解析api sun jaxp既有dom方式也有sax方式,而 ...

  9. :Android网络编程--XML之解析方式:SAX

    任何放置在资源(res)目录下的内容可以通过应用程序的R类访问,这是被Android编译过的,而任何放置在资产(assets)目录下的内容会保持它的原始文件格式,为了读取它们,必须使用AssetMan ...

随机推荐

  1. C# 开发者代码审查清单【转】

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

  2. Adobe Flash Builder 4.6破解方法

    http://hi.baidu.com/cm186man/blog/item/148658ce557c0323b700c853.html 1.到Adobe官网下载FlashBuilder 4.6,有简 ...

  3. MyBatis知多少(25)动态SQL

    使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...

  4. position 属性和 z-index 属性对页面节点层级影响的例子

    转:http://www.neoease.com/tutorials/z-index/ 不设 z-index 属性 单层节点 双层节点 多层节点

  5. ruby -- 进阶学习(十七)应用代码优化

    ROR开发,代码优化的方法下面这两项是比较重要的: link_to  Rails的link_to是非常慢的,它的代码实现过于复杂,特别是Rails1.2引入了REST以后,大量的命名路由被使用,这些命 ...

  6. centos nfs配置--转载

    http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-client-config.html 18.6. NFS Server ...

  7. Robot Framework自动化测试(三)---Selenium API

    Robot  Framework  Selenium  API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium 关键字库. 一.浏览器驱动 通过不同的浏览器执行脚本. Op ...

  8. iOS-App的启动页设置

    一. 要求 1. 把一张图片设置成为启动页面. 二. 准备工作 1. 把准备的适配的(@1x,@2x,@3x)三张图片拖进工程中. 2. 打开LaunchScreen.storyboard. 在页面上 ...

  9. Laravel 5 多个视图共享数据的方法

    我们都知道模板一般会用到继承,导航栏就是一个很好的例子,但是导航栏的数据如何共享,比如有个导航的文件叫在view/navigation.blade.php 为了简单一点,文件里只有设置了一个变量 {{ ...

  10. 点餐系统mealsystem.sql

    /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50162 Source Host : ...