jsjquery项目实战servletjsp课源码及课件_第1页
jsjquery项目实战servletjsp课源码及课件_第2页
jsjquery项目实战servletjsp课源码及课件_第3页
jsjquery项目实战servletjsp课源码及课件_第4页
jsjquery项目实战servletjsp课源码及课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习内容:1.XML的理解2.XML的基本语法(写一个正确的xml文档)3.XML文件的解析DOM解析DOM4J解析SAX解析PULL解析第一部分:XML的理解

一个WEB应用的常见功能就是用户的注册与登陆功能,那用户的信息在应用中以何种形式保存呢?Name/password关系型数据库表中users表

提出问题idnamepwd1tom1234562jack343434什么是XML?ExtensibleMarkupLanguage,可扩展标记语言。Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发布的XML1.0规范。对应的文件为.xml文件.

XML语言出现的根本目标在于描述在现实生活中经常出现的有关系的数据(如:注册用户的信息).在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据。XML文件的使用例子中国北京湖南湖北海淀丰台长沙岳阳武汉荆州<?xmlversion="1.0"encoding="utf-8"?><中国> <北京> <海淀></海淀> <丰台></丰台> </北京> <湖南> <长沙></长沙> <岳阳></岳阳> </湖南> <湖北> <武汉></武汉> <荆州></荆州> </湖北></中国>XML常见应用1.应用的配置文件1.1.web应用的核心配置文件web.xml1.2.SSH框架的配置文件2.网络传输数据的格式2.1.Ajax请求的响应数据2.2.WebService请求和响应数据第二部分:XML的基本语法XML语法一个XML文件分为如下几部分内容:文档声明元素/标签属性注释特殊字符CDATA区处理指令(processinginstruction)编写测试文件grammarTest.xmlXML语法-文档声明在编写XML文档时,必须在文件的第一行书写文档声明。最简单的声明语法:

<?xmlversion="1.0"?>用encoding属性说明读取文档所用的解码的字符集:

<?xmlversion="1.0"encoding="utf-8"?>

这样就要求保存文件时,必须用utf-8编码保存元素(1)XML元素也称为标签,由开始标签(<tagName>)到结束标签(</tagName>)组成,一个标签有如下几种书写形式,例如:空标签:<a/><a></a>包含文本标签体的标签:<a></a>包含子标签的标签: <a><b></b></a> 但标签交叉嵌套是不允许的,如: <a><b></a></b>错误格式良好的XML文档必须有且仅有一个根标签,其它标签都是这个根标签的子孙标签。元素(2)——命名规范一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:区分大小写,例如,<P>和<p>是两个不同的标记。不能以数字或"_"(下划线)开头。不能以xml(或XML、或Xml等)开头。不能包含空格。名称中间不能包含冒号(:)。属性一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:

<inputname=“text”>属性值一定要用双引号(")或单引号(')引起来定义属性必须遵循与标签相同的命名规范

多学一招:在XML技术中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:

<input> <name>text</name> </input>注释Xml文件中的注释采用:“<!--注释-->”格式。注意:XML声明之前不能有注释注释不能嵌套,例如:

<!--大段注释

…… <!--局部注释--> …… -->

转义字符对于一些单个字符有特别含义,不能直接使用,应使用他们的转义序列只有"<"字符和"&"字符对于XML来说是严格禁止使用的

CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出。语法:<![CDATA[内容]]>

<![CDATA[ <atguigu> <br/> </atguigu>

]]>处理指令处理指令,简称PI(processinginstruction)。处理指令用来指挥解析引擎如何解析XML文档内容。处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。

<?xml-stylesheettype="text/css"href="p.css"?>作业:定义一个xml文件来描述我们班级的学员的信息,学生的信息包括:学号(id),姓名(name),年龄(age).第三部分:XML文件的解析XML解析技术概述XML解析方式分为三种:dom、sax和pulldom:(DocumentObjectModel,即文档对象模型)是W3C组织推荐的处理XML的一种方式。 它下面有两个分支:Jdom与dom4j

它们可都可以对xml文件进行增删改查的操作sax:(SimpleAPIforXML)不是官方标准,但它是XML社区事实上的标准,几乎所有的XML解析器都支持它。只能进行查询pull:Pull解析和Sax解析很相似,都是轻量级的解析,它是一个第三方开源的Java项目,但在Android的内核中已经嵌入了Pull。只能进行查询相关开发包JAXP(JavaAPIforXMLProcessing)开发包是J2SE的一部分,它能做dom和sax解析主要有两个包:javax.xml.parsers:有解析器对象接口 org.w3c.dom:有很多DOM解析的相关接口 org.xml.sax:有很多Sax解析的相关接口Jdom、dom4j、pull开发包都是第三方jar包,如果需要使用,必需导入DOM解析DOM中对象接口关系图NodeDocumentElementAttrTextNode:xml文件所有对象的根接口节点Document:代表xml文件的整个内容的对象的接口Element:代表某个元素或标签的对象的接口Attr:代表某个元素的某个属性对象的接口Text:代表标签体文本标签本对象的接口NodeList:代表包含多个Node接口对象的集合对象NodeList文档对象接口重要方法(1)NodeappendChild(newChild)将新的节点添加为最后一个子节点insertBefore(newChild,refChild)在某个子节点前插入一个新子节点removeChild(oldChild)删除指定的某个子节点replaceChild(newChild,oldChild)将指定的子节点替换成新的子节点setTextContent(textContent)设置文本内容(一般用在元素对象上)getNodeName()得到节点名称(一般用在元素对象上)getParentNode()得到父节点(一般用在元素对象上)getTextContent()得到文本内容(一般用在元素对象上)getFirstChild()得到第一个子节点getLastChild()得到最后一个子节点getNextSibling()得到下一个兄弟节点getPreviousSibling()得到上一个兄弟节点文档对象接口重要方法(2)DocumentcreateElement(name)创建一个指定名称的标签对象返回getDocumentElement()//getRootElement()得到文档的根元素对象getElementById(id)根据子元素的id属性找到对应的子元素getElementsByTagName(name)根据标签名得到对应的子标签的集合ElementsetAttribute(name,value)设置元素的属性名和属性值removeAttribute(attrName)根据属性名删除对应的属性getAttribute(attrName)根据属性名得到对应的属性getElementsByTagName(name)根据标签名得到对应的子标签的集合getTagName()得到标签名Attr、Text极少直接操作这两个接口的对象,一般通过Element对象来操作NodeListgetLength()得到包含的节点对象的个数item(index)根据下标得到某个节点DOM方式解析XML文件DOM解析测试练习查找某一个节点编写测试类DomTest以DOM的方式加载xml文件javax.xml.parsers包中的DocumentBuilder类用于加载xml文件,并产生一个Document对象//创建一个xml文档解析器工厂对象DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();//通过工厂创建一个xml文档解析器对象DocumentBuilderbuilder=factory.newDocumentBuilder();//通过解析器对象解析一个文件对象得到Document对象Documentdocument=builder.parse(newFile("d:/users.xml"));Dom4j编程DOM4J解析XML文档Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。Dom4j是一个非常优秀的JavaXMLAPI,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate使用Dom4j开发,需下载dom4j相应的jar文件。查看dom4j帮助文档编写测试类Dom4jTestDocument对象DOM4j中,获得Document对象的方式有三种:

1.读取XML文件,获得document对象

SAXReaderreader=newSAXReader();

Document

document=reader.read(newFile("input.xml“)); 2.解析XML形式的文本,得到document对象.

Stringtext="<members></members>";

Documentdocument=DocumentHelper.parseText(text); 3.主动创建空document对象.

Documentdocument=DocumentHelper.createDocument();

//创建根节点

Elementroot=document.addElement("members");元素Element操作//获取文档的元素.Elementroot=document.getRootElement();//获取某个元素的指定名称的第一个子节点. Elementelement=element.element(“书名");//获取某个元素的指定名称的所有子元素的集合

Listlist=element.elements(“书名”);//添加一个指定名称的子元素

ElementchildEle=parentEle.addElement(“书名”);//删除某个元素指定的子元素

parentEle.remove(childEle);属性Attribute操作//获取某个元素的指定名称的属性对象

Attributeattr=element.attribute(“id”);//获取某个元素的指定名称的属性值

Stringid=element.attributeValue(“id”);//给元素添加属性或更新其值

Attributeattr=element.addAttribute(“id”,”123”);//删除某个元素的指定属性

element.remove(attribute);文本Text的操作//获取某个元素的文本内容

Stringtext=element.getText();//给某个元素添加或更新文本内容

element.setText(“Tom”);将文档写入XML文件. OutputFormatformat=OutputFormat.createPrettyPrint();

XMLWriterwriter=newXMLWriter(newFileOutput("output.xml“),format);

writer.write(document);

writer.close();XPath介绍XPath是在XML文档中查找信息的语言XPath是通过元素和属性进行查找XPath简化了Dom4j查找节点的过程使用XPath必须导入jaxen-1.1-beta-6.jar否则出现NoClassDefFoundError:org/jaxen/JaxenExceptionXPath语法/students/student从根元素开始逐层找,以”/”开头//name直接获取所有name元素对象,以“//”开头//student/*获取所有student元素的所有子元素对象//student[1]或//student[last()]获取所有student元素的第一个或最后一个//student[@id]获取所有带id属性的student元素对象//student[@id=‘002']获取id等于002的student元素对象查询节点获取所有符合条件的节点document.selectNodes(StringxpathExpression)

返回List集合获取符合条件的单个节点document.selectSingleNode(StringxpathExpression)

返回一个Node对象。 如果符合条件的节点有多个,那么返回第一个。编写测试类Dom4jXpathTestSAX解析SAX解析疑问:为什么会出现SAX解析?在使用DOM解析XML文档时,需要读取整个XML文档,在内存中构架代表整个DOM树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果XML文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。注意:sax只能用于读取xml文件,无法作更新SAX解析SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器(对象):解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。编写测试类SaxTestSAX方式解析XML文档使用SAXParserFactory创建SAX解析工厂SAXParserFactoryfactory=SAXParserFactory.newInstance();通过SAX解析工厂得到解析器对象 SAXParsersp=factory.newSAXParser();通过解析器对象得到一个XML的读取器XMLReaderxmlReader=sp.getXMLReader();设置读取器的事件处理器 xmlReader.setContentHandler(newBookParserHandler());解析xml文件 xmlReader.parse("book.xml");PULL解析Pull解析疑问:为什么会出现PULL解析?Pull解析与sax解析类似都

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论