1XML入门1.1引入HTML:负责网页的结构CSS:负责网页的样式(美观)Javascript:负责在浏览器端与用户进行交互。负责静态的网页制作的语言HTML语言特点:1)由标签组成。titlephr/br/2)语法结构松散的p/ppP大小写不区分结束标签和开始标签不一定匹配htmlheadtitlethisistitle/title/headbodyphtml标签/pPhtml标签/Pabcabc标签/abc自定义标签/body/html这种自定义标签可以把他们叫做xml标签。1.2HTML和XML的区别HTMLXML名称:HyperTextMarkupLanguae(超文本标记语言)ExtendMarkupLanguge(可扩展标签语言)标签:标签是w3c组成指定,固定的,约100来个标签由开发者自己制定的(要按照一定的语法定义)作用:负责网页的结构1)描述带关系的数据(作为软件的配置文件):包含与被包含的关系properties文件:key-valuename=ericpassword=123456usernameeric/namepassword123456/password/user场景:tomcatstrutsHibernatespring(三大框架)2)作为数据的载体(存储数据,小型的“数据库”)2XML作用2.1描述带关系的数据(软件的配置文件)web服务器(PC):学生管理系统-添加学生功能-添加学生页面-name=eric&email=eric@qq.com前提:网络(IP地址:oracle:255.43.12.54端口:1521)java代码:使用ip(255.43.12.54)地址和端口(1521),连接oracle数据库,保存学生数据。把ip地址端口配置到xml文件:host.xmlhostip255.43.12.55/ipport1521/port/host数据库服务器(PC):主服务器(255.43.12.54):Oracle数据库软件(负载)副服务器(255.43.12.55):Oracle数据库软件2.2数据的载体(小型的“数据库”)教师管理系统:姓名工龄+1邮箱发教师数据给财务管理系统:Stringteacher=name=张三&email=zhangsan@qq.com&workage=2字符串(问题:1)不好解析2)不是规范)teacher.xmlteachername张三/nameemailzhangsan@qq.com/emailworkage2/workage/teacher这种一种规范财务管理系统:姓名工龄+1邮箱发奖金:统计奖金。工龄发邮件功能:邮箱姓名金额方案一:在财务管理系统中维护了一套教师信息。每年:工龄增加维护了两个系统的信息。方案二:教师信息只在教学管理系统中维护。3XML语法xml文件以xml后缀名结尾。xml文件需要使用xml解析器去解析。浏览器内置了xml解析器。3.1标签语法:student/student开始标签标签体内容结束标签1)student/或student/student空标签。没有标签体内容2)xml标签名称区分大小写。3)xml标签一定要正确配对。4)xml标签名中间不能使用空格5)xml标签名不能以数字开头6)注意:在一个xml文档中,有且仅有一个根标签3.2属性语法:Studentname=ericstudent/Student注意:1)属性值必须以引号包含,不能省略,也不能单双引号混用!!!2)一个标签内可以有多个属性,但不能出现重复的属性名!!!3.3注释语言:!--xml注释--练习:通讯录系统联系人数据:编号(唯一的)姓名年龄电话邮箱QQ要求:contact.xml1)设计一个xml文件,用于存储联系人数据2)这个xml文件可以多个联系人。3.4文档声明语法:?xmlversion=1.0encoding=utf-8?version:xml的版本号encoding:解析xml文件时查询的码表(解码过程时查询的码表)注意:1)如果在ecplise工具中开发xml文件,保存xml文件时自动按照文档声明的encoding来保存文件。2)如果用记事本工具修改xml文件,注意保存xml文件按照文档声明的encoding的码表来保存。3.5转义字符在xml中内置了一些特殊字符,这些特殊字符不能直接被浏览器原样输出。如果希望把这些特殊字符按照原样输出到浏览器,对这些特殊字符进行转义。转义之后的字符就叫转义字节。特殊字符转义字符<>"&&空格&nsbp;3.6CDATA块作用:可以让一些需要进行包含特殊字符的内容统一进行原样输出。3.7处理指令作用:告诉xml解析如果解析xml文档案例:?xml-stylesheettype=text/csshref=1.css?告诉xml解析该xml文档引用了哪个css文件需要提前xml内容可以使用xml-stylesheet指令指令4XML解析4.1引入xml文件除了给开发者看,更多的情况使用程序读取xml文件的内容。这叫做xml解析4.2XML解析方式(原理不同)DOM解析SAX解析4.3XML解析工具DOM解析原理:1)JAXP(oracle-Sun公司官方)2)JDOM工具(非官方)3)Dom4J工具(非官方)三大框架(默认读取xml的工具就是Dom4j).......SAX解析原理:1)Sax解析工具(oracle-sun公司官方)4.4什么是DOM解析DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。4.5Dom4j工具非官方,不在jdk中。使用步骤:1)导入dom4j的核心包。dom4j-1.6.1.jar2)编写Dom4j读取xml文件代码publicstaticvoidmain(String[]args){try{//1.创建一个xml解析器对象SAXReaderreader=newSAXReader();//2.读取xml文档,返回Document对象Documentdoc=reader.read(newFile(./src/contact.xml));System.out.println(doc);}catch(DocumentExceptione){e.printStackTrace();thrownewRuntimeException(e);}}4.6Domj4读取xml文件节点:IteratorElement.nodeIterator();//获取当前标签节点下的所有子节点标签:ElementDocument.getRootElement();//获取xml文档的根标签ElementELement.element(标签名)//指定名称的第一个子标签IteratorElementElement.elementIterator(标签名);//指定名称的所有子标签ListElementElement.elements();//获取所有子标签属性:StringElement.attributeValue(属性名)//获取指定名称的属性值AttributeElement.attribute(属性名);//获取指定名称的属性对象Attribute.getName()//获取属性名称Attibute.getValue()//获取属性值ListAttributeElement.attributes();//获取所有属性对象IteratorAttributeElement.attibuteIterator();//获取所有属性对象文本:Element.getText();//获取当前标签的文本Element.elementText(标签名)//获取当前标签的指定名称的子标签的文本内容练习:把上午写的联系人的xml文件内容,使用dom4j完整地读取并打印出来。总结:1)XML的作用配置文件(最常见)作为数据库2)XML语法3)XML解析(DOM解析)3.1DOM解析原理3.2Dom4j工具(基于DOM解析)读取:节点标签节点属性节点文本节点明天:xPath技术、SAX解析、XML约束