一、XMl
1.1、XML简介:
XML指可扩展标记语言(eXtensible Markup Language),它是一种很像HTML的标记语言。XML的设计宗旨是传输数据,焦点是数据的内容,而HTML被设计用来显示数据,其焦点是数据的外观。XML是不会做任何事情的,它只是被设计用来结构化、存储以及传输信息。
1 <mail> 2 <from>tom</from> 3 <to>lily</to> 4 <detail>I will go home this weekend!</detail> 5 </mail>
1.2、XML结构:
XML是一种树结构。树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
XML文档必须包含根元素,该元素是所有其他元素的父元素。XML文档中的元素形成了一棵文档树,这棵树从根部开始,并扩展到树的最底端。
所有的元素都可以有子元素,父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)。所有的元素都可以有文本内容和属性(类似于HTML中的元素)
1 <bookstore> 2 <book category="children"> 3 <title lang="en">Harry Potter</title> 4 <author>J K. Rowling</author> 5 <year>2005</year> 6 <price>29.99</price> 7 </book> 8 <book category="cooking"> 9 <title lang="en">Everyday Italian</title> 10 <author>Giada De Laurentiis</author> 11 <year>2005</year> 12 <price>30.00</price> 13 </book> 14 </bookstore>
1.3XML语法规则:
它定义XML的版本(1.0)和所使用的编码(utf-8)字符集。
所有的XML元素都是成对出现的,有一个开始标签,就必须有一个关闭标签。
XML标签对大小写敏感,标签与标签是不同的。
XML文档必须有根元素,标签如果需要嵌套,必须正确嵌套,在内层打开的标签就必须在内层关闭。
XML标签如果需要添加属性,属性值必须加引号。
在XML中编写注释的语法与HTML的语法很相似,都是。
在XML中,空格会被保留,不像HTML中,加再多的空格最终都只合并为一个。
1.4XML命名规则:
名称可以包含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字母 xml(或者 XML、Xml 等等)开始
名称不能包含空格
可使用任何名称,没有保留的字词。
1.5XML元素:
A、开始标记
B、元素属性(字符属性、嵌套元素、实体、CDATA)
B、元素内容
1.6DTD:
DTD(文档类型定义)的作用是定义XML文档的合法构建模块。拥有正确语法的XML被称为“形式良好”的XML,我们可以通过DTD验证XML是“合法”的 XML。
1.7为什么使用 DTD:
通过DTD,每一个XML文件均可携带一个有关其自身格式的描述,通过DTD,独立的团体可一致地使用某个标准的DTD来交换数据,而应用程序也可使用某个标准的DTD来验证从外部接收到的数据,还可以使用DTD来验证自身的数据。
1.8 使用dom4j操作xml:
- 创建Document对象
1 Document document = DocumentHelper.createDocument(); 2 3 Element root = document.addElement(“students”); // 根元素节点
- 读取XML文件时,获取Document对象
1 SAXReader reader = new SAXReader(); 2 3 Document document = reader.read(new File(“student.xml”));
- 字符串解析为XML时,获取Document对象
1 String text = “tom“; 2 3 Document document = DocumentHelper.parseText(text);
1.9xPath:
XPath路径表达式
XPath使用路径表达式来选取XML文档中的节点或者节点集,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
XPth节点:
在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点。
SAX提供一种用于解析XML文档的事件驱动模型,在识别不同的XML语法结构时SAX解析器使用回调机制来通知客户端应用程序