《XML技术》教案_第1页
《XML技术》教案_第2页
《XML技术》教案_第3页
《XML技术》教案_第4页
《XML技术》教案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、XML技术教案第六章 XML技术1 . 回顾上一章:10分钟.3402 . 课程知识点讲解.340 2.1.具体知识点1:XX分钟.340 2.2.具体知识点2.:XX分钟340 2.3.具体知识点3:XX分钟.3413 . 本章总结 10分钟.3414 . 考核点.3415 . 扩展部分.3416 . 学员问题汇总.3417 . 作业.341授课教师:XXX课时:2小时本章主要目的 XXX本章重点 XXX本章难点 XXX1、回顾上一章:X分钟2 、课程知识讲解: 2.1 具体知识点1:为什么要学习XML技术?XX分钟案例:1.假如你的公司用windows平台去开发A的网站,这个时候呢你的公司

2、网站要喝另外一个公司Liux平台开发的Jsp网站进行通讯,这里用的是不同的应用程序,不同的语言开发的,那么我们要怎么交互呢?假如要做一个旅游网站,旅游网站上要标出去旅游点的汽车车次、火车车次、天气预报、以及当地旅游景点的门票出售情况等,天气我们是从气象局的网站上实时的抓取数据,气象局的网站和我们的旅游网肯定不一样,那么我们怎么样进行数据通讯呢?XML技术就能为我们解决这样的问题。 2.2 具体知识点2:XML存储数据XX分钟 知识点讲解1:什么是XML?XML是(Extensible Markup Language)的缩写,即可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记来描述

3、数据。应用很广泛,比如网站、应用程序的配置文件等等一般都是用XML文件描述的。XML的特点:XML与操作系统、编程语言的开发平台都无关。实现不同系统之间的数据交互作用:配置应用程序和网站 数据交换 2.2 具体知识点3:XML文档结构XX分钟1 XML声明<?xml version="1.0" encoding="UTF-8"?>表示XML声明,用以标明该文件的是一个XML文档.XML文档总是以XML声明开始的。它定义了XML的版本和使用的编码信息 这个声明是固定不变的2.标签在XML中,用尖括号< >括起来的各种标签(Tag)来

4、标记数据,标签是成对使用来界定字符数据,例如,<author>王珊</author>,其中<author>是开始标签,</author>结束标签,“王珊”是标签描述的内容。可以包含各种标签。3.根元素每个XML文档必须有且仅有一个根元素,如<books></books>。根元素的特点:根元素是一个完全包括文档中其他所有元素的元素。根元素的起始标签要放在所有其他元素的起始标签之前。根元素的结束标签要放在所有其他元素的结束标签之后。4.元素XML文档的主要部分是元素,元素由开始标签、元素内容和结束标签组成。元素内可以包含子元素

5、、字符数据.元素名的命名规则:1. 名称中可以包含字母、数字和其他的字符。2. 名称不能以数字或标点符号开始。3. 名称不能是以字符“xml”XML或者是“Xml”4. 名称中不能含有空格。5. 大小写敏感。注意:XML标签必须成对出现,并且正确的嵌套。 <title><name>XML编程</title></name> 错的元素允许为空元素 例如:<title> </title> <title></title> </ title>6. 属性XML中存储数据(携带数据)是通过元素之间的内

6、容来存储数据的,但是我们还可以通过属性来携带数据。什么是属性呢?<book id="bk101"> 这里的id就是book元素的一个属性.属性的语法:<元素名 属性名=“属性值”>注意事项:属性值要用双引号包裹。一个元素可以有多个属性,多个属性之间用空格隔开。属性中不能直接包含< 、 &符号属性可以加在任何一个元素的起始标签上,但是不能加在结束标签上。7. XML中的注释<!注释内容 - >8. XML中特殊字符的处理课本的P176页如果在元素的文本中有大量的特殊字符,可以使用CDTAT节处理什么是CDTATA节 语法:&l

7、t;! CDATA要显示的字符内容>编写XML的案例:  <?xml version="1.0" encoding="UTF-8" ?> <scores><!第一个学生-> <student id="1">  <name>王同</name>   <course>java</course>   <score>89</score>   </student>

8、;<student id="2"><name>王珊</name>   <course>Sql</course>   <score>58</score>   </student><description><!CDATA包含C#框架和网络编程等,<title></title>等等> </description></scores>2.2 具体知识点4:XML中命名空间XX分钟为什么要有

9、命名空间:在复杂的大型的XML中不可避免的会遇到标示符名称相同但是代表的意义不同的现象。通过命名空间的方法来解决这类问题,在元素名前面增加独特的标示符,特定的元素符号有特定的空间。命名空间语法:xmlns:prefix=”命名空间的URL”xmlns表示必须的属性prefix表示命名空间的别名URL:用来标识抽象或物理资源的紧揍字符串,为保证表示的唯一性,一般用网址案例:<?xml version="1.0" encoding="gb2312"?> <cameras xmlns:digital="http:/www.digic

10、" xmlns:photo=""><digital:camera prodID="P663" name="傻瓜相机" pixels="410000" output_res="640 x 480" int_mem="2 MB" price="300.99"/><photo:camera productID="K29B3" name="

11、超级 35 毫米照相机" lens="35 毫米" zoom="70 毫米" warranty="1 年" price="99.00"/></cameras>2.3 具体知识点3:DTD验证XML文档XX分钟DTD就是用来约束我们XML的文档格式的,实现标准化。(每个公司写的XML不一样,如果套用了同一个DTD后,那么不同的公司之间就可以进行数据交换了。)DTD是Document Type Definition的缩写,文档类型定义。DTD用来描述XML文档的结构的。一个DTD文档可以包含

12、:1. 元素的定义规则:所谓元素的定义规则就是我在DTD里面去定义我要验证的xml文档里面能够包含哪些元素,元素名是什么。2. 元素之间的关系规则:所谓关系规则就是这个元素的父类是谁,这两个元素之间到底是上下层关系还是平行关系。3. 属性的定义规则:我们可以规定属性的名字是什么,属性的值可以是什么类型,属性之间的顺序DTD的作用:DTD使每个XML文件携带一个自身的格式。使不同的组织可以使用一个通用的DTD来交换数据。应用程序可以使用一个标准的DTD校验从外部接受的XML时候有效。知识点讲解 案例:内部DTD<?xml version="1.0"?><!D

13、OCTYPE poem <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)>><poem> <author>王维</author> <title>鹿柴</title> <content>空山不见人,但闻人语声。返景入深林,复照青苔上。 </content></p

14、oem> 元素的定义:案例:<?xml version="1.0" encoding="gb2312"?><!-为下面的xml编写一个DTD文档名称:最多出现1次教师:至少是一个人-><!DOCTYPE 学校 <!ELEMENT 学校 (班级+)><!ELEMENT 班级 (名称?, 教师+)><!ELEMENT 名称 (#PCDATA)><!ELEMENT 教师 (#PCDATA)>><学校><班级><名称>初三二班</名

15、称><教师>李勇</教师></班级></学校>2.4具体知识点4: XML解析XX分钟import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.uti

16、l.List;import javax.naming.NameParser;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.xml.sax.SAXException;import com.pb.entity.Use

17、rs;public class XmlOper /* * 用户登录 * * param user * return * throws DocumentException */public boolean login(Users user, String xmlPath) throws DocumentException boolean flag = false;/ 默认登录失败/ 指定要解析的文件File file = new File(xmlPath);/ 通过Dom4j中的SAXReader对象获得DocumentSAXReader saxReader = new SAXReader();

18、Document document = saxReader.read(file);/ 获得根节点Element rootElement = (Element) document.getRootElement();/ 获得子节点List<Element> list = rootElement.elements();for (Element element : list) / 获得idAttribute att = element.attribute("id");int id = Integer.parseInt(att.getValue();String name

19、 = element.elementText("name");String password = element.elementText("password");/ 判断用户名密码是否正确if (name.equals(user.getName()&& password.equals(user.getPassword() / 密码相同flag = true;return flag;/* * 用户注册 0注册失败 1注册成功 -1用户名存在 * * param user * return * throws UnsupportedEncodi

20、ngException * throws FileNotFoundException * throws SAXException * throws DocumentException * throws IOException */public int regist(Users user, String xmlPath)throws UnsupportedEncodingException, FileNotFoundException Integer flag = 0;/ 默认失败SAXReader reader = new SAXReader();Document doc = null;Out

21、putFormat format = null;FileOutputStream out = null;XMLWriter xmlWriter = null;try doc = reader.read(xmlPath);Element root = doc.getRootElement();List<Element> elementList = root.elements();for (Element e : elementList) String name = e.elementTextTrim("name");if (name.equals(user.get

22、Name() flag = -1;/ 用户名已经存在break;if (flag != -1) / 在根节点上添加一个user元素Element elementUser = root.addElement("user");/ 添加id属性elementUser.addAttribute("id", user.getId() + "");/ 添加name元素Element elementname = elementUser.addElement("name");/ 给name元素填充内容elementname.set

23、Text(user.getName();/ 添加password元素Element elementPassworde = elementUser.addElement("password");/ 给name元素填充内容elementPassworde.setText(user.getPassword();/ 设置格式format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");out = new FileOutputStream(xmlPath);xmlWriter = new

24、 XMLWriter(out, format);try xmlWriter.write(doc);xmlWriter.flush(); catch (IOException e) e.printStackTrace(); finally /关闭流try if (xmlWriter != null) xmlWriter.close();if (out != null) out.close(); catch (IOException e) e.printStackTrace(); catch (DocumentException e) e.printStackTrace();return 0;/*

25、 * 根据用户名修改密码 * param user * param xmlPath * return */public boolean edit(Users user, String xmlPath) boolean flag = false;/ 默认修改失败/ 获得SAXReader对象SAXReader saxReader = new SAXReader();Document doc = null;OutputFormat format = null;FileOutputStream out = null;XMLWriter xmlWriter = null;try / 获得dicumen

26、t对象doc = saxReader.read(xmlPath);/ 获得根元素Element root = doc.getRootElement();/ 获得根节点下的所有的元素ArrayList<Element> elementList = (ArrayList<Element>) root.elements();/先获得name相同的name的标签for (Element element : elementList) String name=element.elementText("name");if(name.equals(user.getN

27、ame()System.out.println(name);/获得名字相同的password节点Element passwordElement=element.element("password");/System.out.println(passwordElement.getText();passwordElement.setText(user.getPassword();break;/ 设置格式format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");out = new

28、 FileOutputStream(xmlPath);xmlWriter = new XMLWriter(out, format);/将document写入到xmlxmlWriter.write(doc);flag=true; catch (DocumentException e) System.out.println("获得document失败!");e.printStackTrace(); catch (FileNotFoundException e) e.printStackTrace(); catch (UnsupportedEncodingException e)

29、 e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); finally try if (xmlWriter != null) xmlWriter.close();if (out != null) out.close(); catch (IOException e) e.printStackTrace();return flag;/* * 删除用户 * param user * param xmlPath * return */public boolean delete(Users user, String xmlPath) boolean flag = false;/ 默认修改失败/ 获得SAXReader对象SAXReader saxReader = new SAXReader();Document doc = null;OutputFormat format = null;FileOutputStream out = null;XMLWrite

温馨提示

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

评论

0/150

提交评论