陈力:传智播客古代 珍宝币 泡泡龙游戏开发第50讲:PHP中的xml编程

来源:互联网 发布:网络作家丁凡个人资料 编辑:程序博客网 时间:2024/04/29 13:40

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第50讲:PHP中的xml编程

 Xml是extensiable markup language的简称,包括文档声明、元素、属性、注释、CDATA区、特殊字符 、处理指令等部分。本文结合贵阳网站建设中的实践经验对Xml、Dom、实体定义、dtd等内容进行介绍。陈力:传智播客古代 珍宝币 泡泡龙游戏开发第50讲:PHP中的xml编程

一、xml介绍
    xml 源于1969年的通用标记语言gml->sgml(1985)->html(1993)->xml(1998)。在xml的基础上还出现了xhtml,wml等标记语言。Xml是extensiable markup language的简称。
    html的缺点:标签是规定好,用户不能够自定义,html文件的显示的样式和数据是绑定在一起,数据没有复用,html标签是没有含义等等。
为什么需要XML:两个程序间进行数据通信,给一台服务器,做一个配置文件,当服务器程序启动时,去读取它应当监听的端口号、还有连接数据库的用户名和密码等等。

软件设计,PHP教程,贵阳网站建设

XML技术用于解决什么问题?
    XML语言出现的根本目标在于描述上图那种,在现实生活中经常出现的有关系的数据。在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。例如:
<?xml version="1.0" encoding="UTF-8"?>
<贾府>
 <贾演>
  <贾代化>
  <贾敬></贾敬>
  </贾代化>
 </贾演>
 <贾源>
  <贾代善>
  <贾政></贾政>
  </贾代善>
 </贾源>
</贾府>
XML常见应用?
    xml的出现解决了程序间数据传输的问题: 比如qq之间的数据传送做案例进行详细讲解,用xml格式来传送数据,具有良好的可读性性,可维护性。
xml可以做配置文件:xml文件做配置文件可以说非常的普遍。
    xml可以充当小型的数据库:xml文件做小型数据库,也是不错的选择,我们程序中可能用到一些经常要人工配置的数据,如果放在数据库中读取不合适(因为你要增加维护数据库工作),则可以考虑直接用xm来做小型数据库 【比如msn中保存用户聊天记录就是用xml文件的】,而且直接读取文件显然要比读取数据库快。
案例:qq间发送信息 message.xml
<?xml version="1.0" encoding="utf-8"?>
<messages>
<message id="a001">
<sender>12345</sender>
<getter>34567</getter>
<content>hello,world</content>
<date>2011-11-11 12:12:12</date>
</message>
<message id="a002">
<sender>12345</sender>
<getter>34567</getter>
<content>hello,world</content>
<date>2011-11-11 12:12:12</date>
</message>
</messages>
xml做小型数据库为例,编写一个myclass.xml class-> stu-> name-> sex-> age
<?xml version="1.0" encoding="utf-8"?>
<classes>
<stu>
<name>红孩儿</name>
<age>100</age>
<sex>男</sex>
</stu>
<stu>
<name>白骨精</name>
<age>120</age>
<sex>女</sex>
</stu>
</classes>


二、XML语法
     一个XML文件分为如下几部分内容:文档声明、元素、属性、注释、CDATA区、特殊字符 、处理指令(processing instruction)。

三、XML语法-文档声明
<?xml version="1.0" encoding=“gb2312"  standalone="yes"?>
XML声明放在XML文档的第一行
XML声明由以下几个部分组成:
version - -文档符合XML1.0规范,我们学习1.0
encoding - -文档字符编码,比如”gb2312”
standalone - -文档定义是否独立使用
standalone="yes“
standalone=“no” 默认

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第50讲:PHP中的xml编程

四、元素 
    每个XML文档必须有且只有一个根元素。
    根元素是一个完全包括文档中其他所有元素的元素。
    根元素的起始标记要放在所有其他元素的起始标记之前。
    根元素的结束标记要放在所有其他元素的结束标记之后。 
    XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:
包含标签体:<a>www.by-sj.com</a>
不含标签体的:<a></a>, 简写为:<a/>
一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套,例如:<a>welcome to <b>www.it315.org</a></b> 
对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。
第一段:<stu>xiaoming</stu> 
第二段:<stu> xiaoming </stu>
由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,要特别注意。
命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
区分大小写,例如,<P>和<p>是两个不同的标记。
不能以数字或"_" (下划线)开头。
不能以xml(或XML、或Xml 等)开头。
不能包含空格。
名称中间不能包含冒号(:)。

在php 解析一个xml文件的时候,
<name>
宋江
</name>
这种是错误的,php在解析的时候,可能会把换行符读取。换行符会认为是内容的一部分。正确的写法是:<name>宋江</name>

五、属性
<Student ID="100">
 <Name>TOM</Name>
</Student>
属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔;有",用'分隔)
一个元素可以有多个属性,它的基本格式为:
<元素名 属性名="属性值">
特定的属性名称在同一个元素标记中只能出现一次
属性值不能包括<, >, &

xml中属性使用需要注意的地方
基本语法:
<标签 属性名=”属性值” 属性名=”属性值” 属性名=”属性值”.. >
内容
</标签>

转义(实体)字符:如果我们属性值中有双引号,单引号,可以使用实体引号。
<stu stuNo="a0&apos;0&quot;1">;
xml中提供了五个实体引用

软件设计,PHP中的XML编程


不要在同一个标签中有相同的属性名
注释的语法:
<!—注释内容 -->
注释内容中不要出现--;
不要把注释放在标记中间;<Name <!--the name-->>TOM</Name>
注释不能嵌套;可以在除标记以外的任何地方放注释。

xml文件中的某个标签内容包含特殊字符。
比如:
<介绍><![CDATA[$^&()><LKL:>Kjlk><]]></介绍>
<头像><![CDATA[$%()^&#@@]]></头像>

六、CDATA的基本语法
    有些内容可能不想让解析引擎解析执行,而是当作原始内容处理,用于把整段文本解释为纯字符数据而不是标记的情况。包含大量<、>、&或者"字符。CDATA节中的所有字符都会被当作元素字符数据的常量部分,而不是XML标记。
<![CDATA[
内容...
]]>

演示:1.大量乱字符 2.<resume></resume>
问题扩展:CDATA节的实际运用!
<?xml version="1.0" encoding="utf-8"?>
<classes>
<stu classNo="a1">
<name>红孩儿</name>
<age>100</age>
<sex>男</sex>
<介绍><![CDATA[dka;lkf;lakf;lkjd7909#$@%%9)*0980-9!~!@09^^^^098>><<>><]]></介绍>
</stu>
<stu>
<name>白骨精</name>
<age>120</age>
<sex>女</sex>
</stu>
</classes>


面试题:请问如何使用xml文件来传递、保存一个图片.
答: 使用程序先读入到内存,然后保存到 xml 文件的<![CDATA[ 文件内容]]>

六、xml中的处理指令PI (processing instrution) 
    处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。
例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。 <?xml-stylesheet type="text/css" href=“my.css"?>
处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。

1.画图示意原理 
2.css举例说明
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="classes.css"?>
<classes>
<stu classNo="a1">
<name>红孩儿</name>
<age>100</age>
<sex>男</sex>
</stu>
<stu>
<name>白骨精</name>
<age>120</age>
<sex>女</sex>
</stu>
</classes>
**************classes.css文件***************
name{
 font-size:100px;
 font-weight:bold;
 color:red;
}
sex{
 font-size:80px;
 font-weight:bold;
 color:blue;
}
age{
 font-size:40px;
 font-weight:bold;
 color:green;
}

【推荐阅读】


陈力:传智播客古代 珍宝币 泡泡龙游戏开发第50讲:PHP中的xml编程

0 0
原创粉丝点击