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. Adobe flash player更新失败

  2. ACE代码编辑器,代码提示,添加自定义数据

    //设置自动提示代码 var setCompleteData = function(data) { var langTools = ace.require("ace/ext/language ...

  3. WCF之常见异常整理(不断更新中...)

    系统Win7   IIS7.5 异常1.找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址.注册的基址方案是 [http]. 产生原因:网站没有配置net.tcp ...

  4. 金蝶EAS常用表

    select * from T_SCM_BillType where FName_L2 like '%委外%'   --单据类型表,查业务单据对应的表  102--销售出库单  330--应收单 se ...

  5. 解决Unreal Engine 4.7.6的DerivedDataCache在C盘疯狂膨胀的问题

    打开 YourEngineFolder\Engine\Config\BaseEngine.ini 将 Local=(Type=FileSystem, ReadOnly=, FoldersToClean ...

  6. codeforces C. Diverse Permutation(构造)

    题意:1...n 的全排列中 p1, p2, p3....pn中,找到至少有k个 |p1-p2| , |p2-p3|, ...|pn-1 - pn| 互不相同的元素! 思路: 保证相邻的两个数的差值的 ...

  7. 关于Expression表达式树的拼接

    最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...

  8. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  9. Android 学习笔记之Volley开源框架解析(四)

    学习内容: 1.NetWorkDispatcher网络请求线程调度... 2.NetWork网络请求抽象类... 3.BasicNetWork网络请求抽象类的具体实现... 4.NetWorkResp ...

  10. 帮助你在 Photoshop 中轻松实现长阴影效果的工具

    扁平化设计正被用于各个主流的移动操作系统以及许多流行的网站,这是一个不断上升的趋势. 这种趋势有其分支,其中之一是“长阴影 “的效果在元素上的使用. 采用角度为 45 度的投影,给对象添加了一份立体感 ...