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. ODAC(V9.5.15) 学习笔记(十九)主键值自动生成

    ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序 ...

  2. offsetof的使用

    #include <stddef.h> #define offsetof ( TYPE, m)   (size_t )&reinterpret_cast< const vol ...

  3. Science上发表的超赞聚类算法

    本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 作者(Alex Rodriguez, Alessandro Laio)提出了一种很简洁优美的聚 ...

  4. ThoughtWorks 2016年第1期DNA活动总结

    今天受邀参加了2016年ThoughtWorks公司成都分公司的2016年第一期DNA活动. 什么是DNA? DNA 即 Design And Analysis.设计与分析.这个活动主要是针对产品经理 ...

  5. tengine + mysql + nginx + php

    tengine + mysql + nginx + php 1.配置防火墙vim /etc/sysconfig/iptables # 允许80端口通过防火墙-A INPUT -m state --st ...

  6. pod install 错误 - incompatible character encodings: UTF-8 and ASCII-8BIT

    pod install [!] Invalid `Podfile` file: incompatible character encodings: UTF-8 and ASCII-8BIT. Upda ...

  7. nginx后的tomcat获取真实用户ip

    目前大部分获取ip的方式:beat.getRequest().getRemoteAddr()但是,如果通过nginx反向代理的话,就获取不到真实ip,是获取的nginx的ip 需要:添加    pro ...

  8. 让我们一起Go(十二)

    前言: 上篇中,我们讲到了在Go语言中如何定义方法,今天,我们将进一步深入Go语言的面向对象编程. 一.Go语言中的接口 首先来看一个最基本的接口: 和定义一个结构体类似,只不过将struct换成了i ...

  9. shell Builtin variables(shell内建变量)

    内容来自:abs-guide $BASH The path to the Bash binary itself bash$ echo $BASH /bin/bash $BASH_ENV An envi ...

  10. 用户无法进入SDSF,报NO GROUP ASSIGNMENT错误

    注:命令行小写部分表出需要根据自己的情况改变!! a)激活SDSF资源类 SETROPTS CLASSACT(SDSF) b)查看SDSF资源类的PROFILE RLIST SDSF * c)如果不存 ...