XML的应用

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)字符集。

  1. 所有的XML元素都是成对出现的,有一个开始标签,就必须有一个关闭标签。
  2. XML标签对大小写敏感,标签与标签是不同的。
  3. XML文档必须有根元素,标签如果需要嵌套,必须正确嵌套,在内层打开的标签就必须在内层关闭。
  4. XML标签如果需要添加属性,属性值必须加引号。
  5. 在XML中编写注释的语法与HTML的语法很相似,都是。
  6. 在XML中,空格会被保留,不像HTML中,加再多的空格最终都只合并为一个。 

                                    特殊符号:

引用符号说明
&lt; < 小于
&gt; > 大于
&amp; & and符号
&apos; ' 单引号
&quot; " 双引号

 

 

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

 


 


 

posted @ 2015-05-09 23:38  安子静  阅读(263)  评论(0编辑  收藏  举报