xml解析

Android--Android解析xml文件

安稳与你 提交于 2020-03-24 06:40:19
解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。   优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。   缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。   使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的情况下(内存,CPU)。 为了解决DOM解析存在的问题,就出现了SAX解析。其特点为:   优点:不用实现调入整个文档,占用资源少。尤其在嵌入式环境中,如android,极力推荐使用SAX解析。   缺点:不像DOM解析一样将文档长期驻留在内存中,数据不是持久的。如果事件过后没有保存数据,数据就会丢失。   使用场合:机器有性能限制。 SAX解析XML文档采用事件驱动模式。什么是事件驱动模式?它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。 基于事件驱动的处理模式主要是基于事件源和事件处理器(或者叫监听器)来工作的。一个可以产生事件的对象叫做事件源,而一个可以针对事件做出响应的对象就被叫做事件处理器。 在SAX接口中,事件源是org.xml.sax包中的XMLReader,他通过parse()方法开始解析XML文档,并根据文档内容产生事件

Android对XML文件解析

心不动则不痛 提交于 2020-03-24 06:40:03
HTTP网络传输中的数据组织方式有三种方式: 1、HTML方式 2、XML方式 3、JSON方式 XML的结构解析如下: 1、节点 2、元素 3、属性和属性值 由于XML的扩展性强,致使它需要有稳定的基础规则来支持扩展,该 语法规则 是: 1、开始和结束标签匹配 2、嵌套标签不能互相嵌套 3、区分大小写 Android中,解析Xml数据的三种方式: 1、DOM(org.w3c.dom) “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 2、SAX(org.xml.sax) Simple API for XML,以事件的形式通知程序,对Xml进行解析。 3、XMLPULL(org.xmlpull.v1) 类似于SAX方式,程序以“拉取”的方式对Xml进行解析。 SAX技术的介绍 SAX是一种以事件驱动的XML api,由它定义的事件流可以指定从解析器传到专门的处理程序的代码的XML结构,简单的讲,它解析速度快,占用内存少的解析器。这种解析器 比较适合android 等移动设备。 使用SAX的优点是: 因为SAX的优势是流的方式处理,当遇到一个标签的时候,并不会记录下当前所碰到的标签。 也就是说,startEelment方法中,你所知道的信息,仅仅是当前的签名的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元素与其他结构相关的信息,都是不知道的。

Java_解析XML文件

风流意气都作罢 提交于 2020-03-24 06:38:37
XML是可扩展标记语言的简称,作为一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性 给数据集成与交互带来了极大的方便。XML在不同语言中的解析方式都是一样的,只不过实现的语言不同而已。 在Java中,XML的解析方式有四种,分别是:DOM解析;SAX解析;JDOM解析;DOM4J解析。前两种属于官方自带的解析方式,与平台无关;后两者是扩展方法,只适用于Java平台。 OK,这篇,我们只研究使用最广泛的DOM4J。 1、简介: 关于dom4j,首先我们要知道,它不是属于Java自带的解析XML方式,也就是说,要想使用dom4j,首先你需要先添加dom4j jar包。 OK,添加完jar包之后,我们就可以研究下它的语法了。 2、语法: 1)、获取根元素: Element e1 = document.getRootElement(); 2)、获取某个元素下面的子元素: Element e2 = root.element("xxx"); 3)、获取元素的子元素集合1 (所有子元素) List<Element> e_list = e2.elements(); 4)、获取元素的子元素集合2(指定名称的子元素集合) List<Element> e_list = e2.elements("user"); 5)、获取元素属性的值 elements.attributeValue(

[Android]XML解析技术

 ̄綄美尐妖づ 提交于 2020-03-24 06:38:19
/* SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。下面是一些ContentHandler接口常用的方法: startDocument() 当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。 endDocument() 和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。 startElement(String namespaceURI, String localName, String qName, Attributes atts) 当读到一个开始标签的时候,会触发这个方法。namespaceURI就是命名空间,localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。通过atts可以得到所有的属性名和相应的值。要注意的是SAX中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息

java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)

為{幸葍}努か 提交于 2020-03-24 06:36:35
本文知识点(目录): 本文下面的“实例及附录”全是DOM解析的相关内容 1、xml解析的含义 2、XML的解析方式 3、xml的解析工具 4、XML的解析原理 5、实例 6、附录1(获取xml中的所有节点、根标签、根标签下的子标签、子标签中的文本内容) 7、附录2(获取xml中的所有节点、根标签、根标签下的子标签、子标签中的文本内容) 8、附录3(把xml文档中的信息封装到对象中) 1、xml解析的含义 xml文件除了给开发者看,更多情况下是使用程序读取xml文件中的内容 2、XML的解析方式 DOM解析 SAX解析 3、xml的解析工具 3.1、DOM解析工具 1.JAXP(oracle-Sun公司官方) 2.JDOM工具(非官方) 3.Dom4j工具(非官方的)。 三大框架(默认读取xml的工具就是DOM4j) 3.2、SAX解析工具 1.Sax解析工具(oracle-Sun公司官方) 4、XML的解析原理 4.1、DOM解析的原理 xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一个Document的对象树,通过document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容. 缺点: 内存消耗大 优点: 文档增删改查比较容易 4.2、SAX解析的原理 从上往下读,读一行处理一行。 DOM与SAX解析的区别 SAX解析原理 优点: 内存消耗小

XML DOM解析

十年热恋 提交于 2020-03-24 06:35:43
创建一个xml文件 建一个文件夹导入jar包 building add 点入 public static void main(String[] args) throws DocumentException, ClassNotFoundException, InstantiationException, IllegalAccessException { // 1.获取解析器 SAXReader sax=new SAXReader(); // 2.获得document文档对象 Document doc=sax.read("src/com/oracle/demo04/web.xml"); // 3.获取根元素 Element element=doc.getRootElement(); // 4.判断元素名称为servlet的元素 Element servlet=element.element("servlet"); // 5.获取servlet-class元素 Element className=servlet.element("servlet-class"); //开始反射 获取MyServlet字节码文件对象 Class c=Class.forName(className.getText()); //快速创建对象 Object obj=c.newInstance(); //向下转型

解析xml的方式

送分小仙女□ 提交于 2020-03-24 06:34:19
1.DOM 理论:将标记文档语言一次性加载进内存,在内存中形成DOM树。 优点:操作方便,可以对文档进行CRUD(增删改查)操作,适用于服务端操作 缺点:占内存,不适用与手机,智能家居等内存容量小的设备。 2.SAX 理论:逐行读取进内存,基于事件驱动。一般读取一行就会释放一行,内存中只存在一行代码 优点:不占内存,使用于手机等内存小的移动端 缺点:只能读取,不能增删改。 xml常见的解析器: 1.JAsp:SUN公司提供的解析器,支持DOM和SAX方式 2.DOM4J:一款比较好用的解析器 3.JSoup:Java的HTML解析器,可以用于解析XML,DOm方式 4.PULL:安卓系统内置的解析器,使用SAx方式解析。 来源: https://www.cnblogs.com/languo520/p/10996426.html

XML的解析

孤街浪徒 提交于 2020-03-24 06:34:04
开发中比较常见的解析方式有三种,如下:   1.DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。     a)优点:元素与元素之间保留结构关系,故可以进行增删改查操作。     b)缺点:XML文档过大,可能出现内存溢出显现。   2.SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)     a)优点:处理速度快,可以处理大文件     b)缺点:只能读,逐行后将释放资源。   3.PULL:Android内置的XML解析方式,类似SAX。(了解) 什么是解析器?   就是根据不同的解析方式提供的具体实现。有的解析器操作过于繁琐,为了方便开发人员,有提供易于操作的解析开发包。 常见的解析开发包:   JAXP:sun公司提供支持DOM和SAX的开发包   JDom:dom4j兄弟   jsoup:一种处理HTML特定解析开发包   dom4j:比较常用的解析开发包,hibernate底层采用。 来源: https://www.cnblogs.com/nylgwn/p/11138687.html

使用jaxp对比xml进行DOM解析

一笑奈何 提交于 2020-03-24 06:33:34
/*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node;

java解析xml字符串方法

倖福魔咒の 提交于 2020-03-24 06:32:42
一,用DOM4J 针对无重复标签的xml字符串格式,如下: 针对此种情况可用 DOM4J 解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelper.parseText(xmlStr); //xmlStr为上图格式的字符串 Node VideoCompany=document.selectSingleNode("//VideoCompany"); //获取节点对象,注意引号内的“//”必须加 ,否则报错 Node DevIP=document.selectSingleNode("//DevIP"); //根据节点对象获取相应信息 String videoCompany=VideoCompany.getText(); String devIp=DevIP.getText(); System.out.println(devIp) //此时输出结果极为字符串:3333 二,用DOM 针对有重复标签的xml字符串格式,如下: <?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <title