1.XML的定义:
XML 于 1998 年 2 月 10 日成为 W3C 的推荐标准。xml一般指可扩展标记语言,可扩展标记语言是一种很像超文本标记语言的标记语言。它的设计宗旨是传输数据,而不是显示数据。
2.通过XML我们可以自定义自己的标签,如:
<mail> <from>tom</from> <to>lily</to> <detail>I will go home this weekend!</detail> </mail>
3.XML结构
XML是一种树结构。树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。XML文档必须包含根元素,该元素是所有其他元素的父元素。XML文档中的元素形成了一棵文档树,这棵树从根部开始,并扩展到树的最底端。
4.XML语法规则
XML声明,如:<?xml version="1.0" encoding="utf-8"?>
它定义XML的版本(1.0)和所使用的编码(utf-8)字符集。
- 所有的XML元素都是成对出现的,有一个开始标签,就必须有一个关闭标签。
- XML标签对大小写敏感,标签与标签是不同的。
- XML文档必须有根元素,标签如果需要嵌套,必须正确嵌套,在内层打开的标签就必须在内层关闭。
- XML标签如果需要添加属性,属性值必须加引号。
- 在XML中编写注释的语法与HTML的语法很相似,都是。
- 在XML中,空格会被保留,不像HTML中,加再多的空格最终都只合并为一个。
特殊符号:
引用 | 符号 | 说明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | and符号 |
' | ' | 单引号 |
" | " | 双引号 |
5.XML命名规则
XML元素必须遵循以下命名规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml(或者 XML、Xml 等等)开始
- 名称不能包含空格
- 可使用任何名称,没有保留的字词。
6.创建XML文件
/** * 创建XML文件 * * @throws IOException */ public void createXml() throws IOException { // 创建Document对象 Document document = DocumentHelper.createDocument(); // 根元素节点 Element root = document.addElement("students"); root.addComment("all students info"); // 添加注释 Element student = root.addElement("student"); // 根元素节点添加子节点 student.addAttribute("id", "001"); // 添加节点属性 Element name = student.addElement("name"); name.addText("July"); // 设置节点文本 Element age = student.addElement("age"); age.addText("18"); // 设置XML美化格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); // 编码字符集设置 // xml写入器 XMLWriter writer = new XMLWriter(new FileWriter("students.xml"), format); // 写操作 writer.write(document); writer.flush(); writer.close(); }
7:DTD的概念:
DTD(文档类型定义)的作用是定义XML文档的合法构建模块。拥有正确语法的XML被称为“形式良好”的XML,我们可以通过DTD验证XML是“合法”的 XML。
8.DTD元素
<!ELEMENT 元素名称 类别>
只有 PCDATA 的元素
只有 PCDATA 的元素通过圆括号中的#PCDATA进行声明:
<!ELEMENT 元素名称 (#PCDATA)>
示例:
<!ELEMENT from (#PCDATA)>
带有任何内容的元素
通过类别关键词ANY声明的元素,可包含任何可解析数据的组合:
<!ELEMENT 元素名称 ANY>
示例:
<!ELEMENT mail ANY>
带有子元素(序列)的元素
带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:
<!ELEMENT 元素名称 (子元素名称 1)>
或者
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
示例:
<!ELEMENT mail (from,to,detail)>
8.DTD属性
声明属性
属性声明使用下列语法:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
9.
CDATA与PCDATA
XML文档中的所有文本均会被解析器解析,只有CDATA区段中的文本会被解析器忽略。
10.外部文档声明
这是包含DTD的“mail.dtd”文件: <!ELEMENT mail (from,to,detail)> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT detail (#PCDATA)> XML文件: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mail SYSTEM "mail.dtd"> <mail> <from>tom</from> <to>lily</to> <detail>I will go home this weekend!</detail> </mail>
11.内部文档声明
假如DTD被包含在XML源文件中,它应当通过下面的语法包装在一个DOCTYPE声明中:
假如DTD被包含在XML源文件中,它应当通过下面的语法包装在一个DOCTYPE声明中: <!DOCTYPE root-element [element-declarations]> 如: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mail[ <!ELEMENT mail (from,to,detail)> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT detail (#PCDATA)> ]> <mail> <from>tom</from> <to>lily</to> <detail>I will go home this