XML、DTD、XPATH要点总结
发布时间:2020-12-16 05:53:54 所属栏目:百科 来源:网络整理
导读:1、什么是xml(xtendsible markup language可扩展的标记语言)? 1)定义 基于文本的通用的数据保存格式。 (1)通用的 点的坐标 Point类 point对象(x=10,y=20) a,序列化 b,数据库表 c,文件 ... (2)数据格式 point x10/x y20/y /point 2、xml的基本语法 1)元素 (1)
1、什么是xml(xtendsible markup language可扩展的标记语言)?
1)定义 基于文本的通用的数据保存格式。 (1)通用的 点的坐标 Point类 point对象(x=10,y=20) a,序列化 b,数据库表 c,文件 ... (2)数据格式 <point> <x>10</x> <y>20</y> </point> 2、xml的基本语法 1)元素 (1)什么是元素? 开始标记、结束标记以及标记之间的内容统称为元素。 (2)元素有哪些特点 a,每个xml文档必须有唯一的一个根元素。 b,元素可以嵌套。 c,元素有开始标记和结束标记,如果 一个元素没有内容,称之为空元素。 比如: <order></order> 空元素也可以简写为 <order/> 2)属性 (1)什么是属性? 用来描述元素的特性 (2)属性的特点 a,属性必须有属性名称和属性值,属性值必须用引号(单引号双引号都可以)括起来。 比如: <point type="a" class="b"> </point> b,属性必须放在开始标记里面。 c,可以有多个属性,多个属性用空格隔开。 3)实体引用 (1)什么是实体引用 xml文档里面,有一些特殊的字符,比如<,>等等,如果要表示其原始的含义,必须用相应的转义字符序列来表示。 < < > > & & ' ' " " 4)xml声明 <?xml version="1.0" encoding="utf-8"?> version:设置xml的版本。 encoding: xml文档的编码。 每一个xml文档,都必须先添加xml声明。 5)CDATA 告诉解析器,CDATA包含的数据不要去解析。 比如: <![CDATA[ 1<2 & 2>3 ]]> 6)大小写敏感 <point></Point> error! 习惯用小写,如果有多个单词组成一个标记,建议用"-"连接。比如 java : studentName xml : <student-name> 3、xml解析 1)常见的解析方式 a,DOM(Document Object Model): 将一个xml文档先读取完毕,然后在内存当中生成一棵完整的dom树。这种方式的缺点是会占用过多的内存。 b,SAX(Simple Api for Xml):基于事件,当解析器读取到开始标记、内容、结束标记会产生相应的事件。通过监听这些事件编写相应的程序。缺点一个是编程相对比较复杂,另外,只能读不能写。SAX对内存空间占用比较小,所以,当对内存空间有限制的场合下需要解析xml时,可以使用SAX。 c,不使用官方提供的DOM和SAX,而是使用一些开源的组件,比如DOM4j,Pull。 2)将一个java对象转换成一个对应的xml文档 (1)思想 step1,先设计好xml文档的结构类对应一个元素,比如Point类对应point元素。 类的属性可以对应一个子元素或者元素的属性。如果类的属性是基本类型,对应子元素或者元素的属性均可,如果类的属性是一个复杂类型,则对应子元素。比如,Student类有一个属性Address,则应该 <student> <address> <city></city> <street></street> </address> </student> step2,在内存当中,构造相应的dom树 step3,输出 3)将一个xml文档转换成一个对应的java对象 (1)思想 step1, 将xml文档转换成一个dom树。 step2, 读取dom树节点的值。 4、xml设计 (1)xml设计的含义 定义xml文档的结构(有哪些元素,元素包含哪些 属性,元素的出现的顺序、次数等等)。 (2)如何设计 1)DTD文档 <!DOCTYPE orders[ <!ELEMENT orders (order+)> <!ELEMENT order (name,flight,time,dest)> <!ELEMENT name (#PCDATA)> <!ELEMENT flight (#PCDATA)> <!ELEMENT time (#PCDATA)> <!ELEMENT dest (#PCDATA)> <!ATTLIST order type CDATA #REQUIRED> ]> 类似于dtd文档,也是用来定义xml文档的结构的。只不过,schema使用了xml的语法,并且,比dtd更灵活,能够表示更复杂的数据类型,并且支持命名空间。 3)示例 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE orders[ <!ELEMENT orders (order+)> <!ELEMENT order (name,dest)> <!ELEMENT name (#PCDATA)> <!ELEMENT flight (#PCDATA)> <!ELEMENT time (#PCDATA)> <!ELEMENT dest (#PCDATA)> <!ATTLIST order type CDATA #REQUIRED> ]> <orders> <order type="vip"> <name>过儿</name> <flight>mu1748</flight> <time>8:00</time> <dest>绝情谷</dest> </order> </orders>5、xpath (1)xpath是什么? 类似于使用sql语句查询数据库,xpath语句可以用来查询xml文档。 (2)如何使用xpath? step1,构造dom树。 比如: SAXReader reader = new SAXReader(); Document doc = reader.read(ips); step2,调用doc的selectNodes方法,该方法里面填写 xpath语句即可。 比如: doc.selectNodes("/orders/order/time"); 典型的xpath语句 1)从根节点开始查询 比如: doc.selectNodes("/orders/order/time"); 2)以索引的方式查询 比如: doc.selectNodes("/orders/order[1]/time"); 3)依据属性值进行查询 比如: doc.selectNodes("/orders/order[@type='vip']/time"); 4)任意查询(不从根节点开始) 比如: doc.selectNodes("//name"); 5)依据子节点的值进行查询 比如: doc.selectNodes("/orders/order[flight='ca1008']/dest"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |