xml语言

sax/dom/jdom/dom4j的区别

北城以北 提交于 2020-03-24 11:25:16
sax/dom/jdom/dom4j的区别【转】 博客分类: xml 网上能够查到很多的4种解析方式的区别,我再做一下摘录和总结,顺带给自己做个备份。 SAX sax分析器在对xml文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对xml文档的访问. 因为事件触发是有时序性的,所以sax分析器提供的是一种对xml文档的顺序访问机制,对于已经分析过的部分, 不能再重新倒回去处理.此外,它也不能同时访问处理2个tag. sax分析器在实现时,只是顺序地检查xml文档中的字节流,判断当前字节是xml语法中的哪一部分,检查是否符合 xml语法并且触发相应的事件.对于事件处理函数的本身,要由应用程序自己来实现. SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。 同DOM分析器相比,sax分析器对xml文档的处理缺乏灵活性,但对于只访问xml文档中的数据而不改变应用程序 来说,sax分析器的效率会很高. sax对内存要求也比较低. 优点:1、无需将整个文档加载到内存中,所以内存消耗少. 2 、推模型允许注册多个contentHandler. 缺点:1、没有内置的文档导航支持. 2、不能随机访问xml文档. 3、不支持原地修改xml. 4、不支持名字空间作用域. 适合

【Python爬虫学习笔记4】结合Xpath与lxml库解析数据

佐手、 提交于 2020-03-24 11:07:20
在之前的学习中了解了如何使用爬虫向目标服务器发送请求并获取响应,而此后便是要对响应进行处理,这里的处理在爬虫中通常指的是数据解析,即将相应内容数据化以方便我们进行有效数据的提取。在此过程中,有许多解析数据的方法,本节介绍利用Xpath和lxml库来解析数据。 Xpath Xpath(全称XML Path Language,XML路径语言),是一门在XML和HTML文档中查找信息的语言,它提供了非常简明的路径选择表达式,可用来对网页的元素及属性进行遍历查找。 语法规则: 1.选取节点 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。 表达式 描述 示例 说明 nodename 选取此节点的所有子节点 div 选取div下所有子节点 / 从当前节点选取直接子节点 /div 从根元素下选取所有div节点 // 从当前节点选取所有子孙节点 //div 从全局节点中选取所有的div节点 @ 选取属性 //a[@class] 选取所有拥有class属性的a节点 . 选取当前节点 .//a 选取当前节点下的所有a节点 .. 选取当前节点的父节点 ..//a 选取当前节点父节点下的所有a节点 2.谓语 谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。 表达式 描述 示例 说明 [index] 选取指定序列的节点 /div/p[1] 选取div下的第一个p节点

Web Service 的工作原理

六眼飞鱼酱① 提交于 2020-03-24 08:07:20
3 月,跳不动了?>>> Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。 Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。 UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目

eclipse maven Cannot change version of project facet Dynamic web module to 3.0

廉价感情. 提交于 2020-03-24 07:57:57
eclipse maven Cannot change version of project facet Dynamic web module to 3.0 (eclipse 修改maven项目的Dynamic web moudule) CreationTime--2018年6月8日08点22分 Author:Marydon 1.前言   百度出来一大堆,要么方法过于麻烦,改了很多不必要的修改;要么就解决不了你的问题,特写此文!!! 2.情景再现   通过maven创建的javaWeb项目无法修改的servlet版本 3.解决方案   第一步:切换到Navigator视图   第二步:打开并修改 org.eclipse.wst.common.project.facet.core.xml   项目-->.settings文件夹-->org.eclipse.wst.common.project.facet.core.xml   可以看到servlet版本为2.3,java版本为1.5   将servlet改成3.0-->保存   注意: 在这里直接修改java的版本无效,改了也不起作用,文末推荐有正确方法!   第三步:打开并修改web.xml      说明: 虽然将Servlet的版本修改成了3.0,但是web.xml引用的还是2.3。   将以下代码进行复制,覆盖掉原来的web

使用MSXML解析XML文件

一个人想着一个人 提交于 2020-03-24 06:40:47
本文以如下的XML文件为例,读写这个XML文件ASKLog.xml <? xml version = " 1.0 " encoding = " utf-8 " ?> < Log > < LogNode > < RecordTime > 2007 - 11 - 28 15 : 23 : 14 </ RecordTime > < RecordState > Running </ RecordState > < RecordMessage > Finished level1 loop </ RecordMessage > </ LogNode > </ Log > (1)需要使用的头文件,dll和namespace #import < msxml.dll > // 利用MSXML解析XML文件以及生成XML文件 #include " msxml.h " using namespace MSXML; using namespace std; (2)在_tmain函数中实现对XML文件的读写 int _tmain( int argc, _TCHAR * argv[]) { MSXML::IXMLDOMDocumentPtr pXmlDoc; MSXML::IXMLDOMElementPtr pXmlRoot; CoInitialize(NULL); // 创建DOMDocument对象

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方法中,你所知道的信息,仅仅是当前的签名的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元素与其他结构相关的信息,都是不知道的。

Android SAX解析XML

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

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()方法中,所有你所知道的信息