九XML技术
xml概念和体系
·XML概念
XML指可扩展标记语言(EXtensible Markup Language)
XML没有预定义标签,需要自行定义标签
·XML的特点
XML数据以纯文本格式存储(只用记事本就可以)
实现不同应用程序之间的数据通信
实现不同平台间的数据通信
实现不同平台间的数据共享
使用XML将不同的程序,不同的平台之间联系起来
·XML的作用
数据存储和数据传输
·XML和HTML之间的差异
XML主要作用是数据存储和传输(传输)
HTML主要作用是用来现实数据(显示)
·一个标准的XML文档
1 <?xml version"1.0" encoding = "UTF-8"?> <!第一行为文档的声明,version是版本> 2 <books> <!books 叫根节点,也叫根元素一个XML只能有一个根元素> 3 <book id = "1001"> <!book 是 books 的子元素 ,id是属性,“1001”是属性值> 4 <name>java开发实战强化</name > 5 <author>张小三</author> 6 <price>98.5</price> <!98.5指的是文本> 7 <book> 8 </books > 9
·XML文件的体系
XHTML 可扩展标识语言
WSDL WEB SERVICES DESCRIPTION LANGUAGE 网络服务描述语言,这种文档可描述某个WEB SERVICE
WAP和WML手持设备的标记语言
XML基本语法
·XML的基本语法
- 有且只有一个根元素
- XML文档声明必须在文档的第一行
- 所有标签必须成对出现
- XML的标签严格区分大小写
- XML必须正确嵌套
- XML种的属性值必须加引号
- XML中,一些特殊字符需要使用“实体”
- XML中可以应用适当的注释
·在eclipse中编写xml文档
·XML元素
XML元素指的是开始标签到结束标签的部分
一个元素中可以包含:1.其他元素
2.文本
3.属性
4.以上的混合
·XML命名规则
1.名称可以包含字母,数字及其他字符;
2.名称不能以数字或者标点符号开始;
3.名称不能以字母xml开始;
4.名称不能包含空格
Schema技术
·DTD验证
概念:DTD文档类型定义
作用:验证身份是“有效”的XML
·使用DTD的局限性
- DTD不遵守XML语法
- DTD数据类型有限
- DTD不可扩展
- DTD不支持命名空间
·Schema技术
1 <?xml version="1.0" encoding="UTF-8"?> 2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 3 <xs:element name="books"> 4 <xs:complexType> 5 <xs:sequence> 6 <xs:element name = "book" maxOccurs="unbounded"> 7 <xs:complexType> 8 <xs:sequence> 9 <xs:element name="name" type ="xs:string"></xs:element> 10 <xs:element name="author" type = "xs:string"></xs:element> 11 <xs:element name="price" type ="xs:double"></xs:element> 12 </xs:sequence> 13 <xs:attribute name="id" type ="xs:positiveInteger" use="required"></xs:attribute> 14 </xs:complexType> 15 </xs:element> 16 17 </xs:sequence> 18 </xs:complexType> 19 </xs:element> 20 </xs:schema>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <books xmlns:xsi="http://www.w3.org/2001/XMLSchema" 3 xsi:noNamespaceSchemaLocation="{book.xsd}"> 4 <book id="1001"> 5 <name>java开发实战</name> 6 <author>邹奇方</author> 7 <price>98.5</price> 8 </book> 9 </books>
1 package com.zqf.schema; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 import javax.xml.transform.Source; 7 import javax.xml.transform.stream.StreamSource; 8 import javax.xml.validation.Schema; 9 import javax.xml.validation.SchemaFactory; 10 import javax.xml.validation.Validator; 11 12 import org.xml.sax.SAXException; 13 14 public class Test { 15 public static void main(String[] args) throws SAXException { 16 //(1)创建SchemaFactory工厂 17 SchemaFactory sch = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 18 //(2)建立验证文件对象 19 File schemaFile = new File("book.xsd"); 20 //(3)利用SchemaFactory工厂对象,接收验证的文件对象,生成Schema对象 21 Schema schema=sch.newSchema(schemaFile); 22 //(4)产生对此Schema的验证器 23 Validator validator = schema.newValidator(); 24 //(5)要验证的数据(准备数据源) 25 Source source = new StreamSource("book.xml"); 26 //(6)开始验证 27 try { 28 validator.validate(source); 29 System.out.println("成功"); 30 } catch (IOException e) { 31 // TODO Auto-generated catch block 32 e.printStackTrace(); 33 System.out.println("失败"); 34 } 35 } 36 }
DOM方式解析XML数据
在java程序中读取XML文件的过程称为解析XML
·解析XML文件的方式
1.DOM解析(java官方提供)
2.SAX解析(java官方提供)
3.JDOM解析(第三方提供)
4.DOM4J解析(第三方提供)
·DOM解析XML的步骤
1.创建一个DocumentBuilderFactory的对象
2.创建一个DocumentBuilder对象
3.通过DoucmentBuilder的parse(...)方法得到Document对象
4.通过getElementsByTagName(...)方法获取节点的列表
5.通过for循环遍历每一个节点
6.得到每个节点的属性和属性值
7.得到每个节点的节点名和节点值