XML 热身运动开始了!大家一起来做运动!

      Flash学习笔记 2006-6-13 10:11
第一节:XML 格式文件的建立。
不要让专业的XML语法把你吓着,其实XML 本身就是一个按照一定规则编写的文本文件,用来存贮各类数据。现在已经有简单易用的XML 文本生成器可以使用了,所以让我们直接跳过语法,不需要为某个语法方面的问题而分散我们的注意力,推荐使用 XML explorer,下载地址为:
bbs.xml.org.cn/dispbbs.asp?boardID=7&ID=85
  这是一个国内讨论XML应用的专业网站,有兴趣可以常去看看,从实用角度来看,有这么个软件用就足够了。
  运行一下软件,首次使用建议打开一个已经建好的XML文档来看看,可以看到它的结构很象Windows注册表的形式,左侧是一个个的结点,右侧是节点中的数据,这就是结构化的XML 文本。在我们的后面的使用中需要建立这样一个XML文本,用新建XML文件,右键点左侧新建结点名为data,在它下面再建一个子结点名为menu,menu下面新建子节点item,item中分别新建三属性title,img,url。可以看到,属性自动的排列到了右侧。保存文件,第一节结束。

有点累了吧,让我们继续!

第二节:XML 格式文件的导入。
XML 实质上还是文本文件的格式,只是扩展名不同而已,因此与文本导入的命令非常的类似,文本文件的加载与使用请参考我的另一篇文章:滚动条的使用,http://blog.5d.cn/user12/dzxz/200605/264160.html ,里面谈到了与文本操作的相关内容。

XML在导入时使用下面的几行语句:

my_xml = new XML();
//首先新建一个XML类
my_xml.load("home2.xml");
//使用类的 load 方法,导入文件

my_xml.onLoad = function (success)
{//导入成功时,可以自动触发onLoad 事件并且自动传递一个参数
if (success)
{//该参数为逻辑值,为 true 时,表示载入成功
trace("XML载入成功!");
}
else
{
trace("XML载入失败!");
} // end if
};
测试一下,成功了没有?


第三节:XML 结点的访问。

结点可以看做是一层层的嵌套数组,每一个数组都叫做 childNodes[];
用下面的语句可以输出整个XML中的内容:
trace( my_xml.childNodes[0]);
它的下一级这样来表示
trace( my_xml.childNodes[0].childNodes[0]);
"子子孙孙无穷匮也",就这样一层层的向里走,但是这样输出的只是类似html标记语法,并没有我们实际设置的属性值怎么办? 用attributes来引出实际的值。
trace(my_xml.childNodes[0].childNodes[0].childNodes[0].attributes.title);
//输出节点中title的值。

也就是说,在找到指定的结点后,可以使用该结点的attributes 加上 属性名的方法,来调用该结点的某个属性。XML结点中的属性名是由用户自己定义的,所以尽量使用一些较通用的名字,可以方便交流。 

一个结点可以有两种类型,一种是XML元素(由几个属性构成,我们建立的item就是这样。)另一种是文本节点,用来记录一些说明文字或其它东西,二者可以用nodeType 来进行判断。,这是一个只读属性,值为1表示XML元素,为3表示文本节点。
trace(my_xml.childNodes[0].childNodes[0].childNodes[0].nodeType );
//将输出一个1 因为该结点是一个元素形式的节点。

此外,还有nodevalue 如果XML对象为文本节点,则nodevalue为该节点的文本; 如果该XML对象是XML元素,则其nodevalue 为null。

trace(my_xml.childNodes[0].childNodes[0].childNodes[0].nodevalue ); //将返回一个null 因为该结点是一个元素形式的节点。

  外部加载的XML文件是否有漏洞,可以用XML对象的status属性来进行判断,我们用XML explorer生成的当然是不会有问题的了,如果是用纯代码来写就可能经常会出现漏洞的了。^_^ 
  
  呵呵,这一节中有几个词比较重要 nodeName、nodeType、nodevalue,这三个都是结点的属性,再有就是 attributes.valueName,它用来访问元素节点的具体,对节点位置的访问用 childNodes 数组来进行,可以一层套一层的来用,XML对象主要的操作内容就是这些了~~

第四节 表格转换为XML

通过前面的使用,你可能已经想到了,XML在记录数据方面用途最大,特别是记录有序的,或者说结构化的数据时非常有效。实际上可以将XML看作是网络传输中使用的数据库,那么现在就需要了解一下这个数据库是怎么建立的。我们以下面的表格来进行说明:
name age score grade
xiaoming 20 98 6
xili 21 95 6
tiger 30 89 5

这样一个表中有三个记录,分别是三个人的姓名、年龄、成绩、年级。这几项具体的数据,当然就表示着某个人的具体的属性,所以在XML中,它们也就是最底层结点的属性值。
从这个表中,我们先发现了结点的属性值,那么,结点又该是谁呢?每一个人具有一些特定的属性,那么这个人就是一个元素,也就是一个元素型的结点,这样我们就找到了节点,再向上看,我们把这几个结点合在一个结点的分支下,将总的结点称之为学习记录(record),这样,就依次得到了这样一个结点图:
record->item1->name,age,score,grade
record->item2->name,age,score,grade
record->item3->name,age,score,grade

从这里可以看出,具体的值总是被认为是属性,当然你还可以这样排列结点:
record->name->item1,item2,item3
record->age->item1,item2,item3
record->score->item1,item2,item3
record->grade->item1,item2,item3
后者与表格很相似,但在添加记录时会有点麻烦,通常按照 对象.属性 的形式来组织数据,更容易被理解。
XML explorer 还能轻易把微软Excel、Access和任何ODBC资料转成XML格式。所以对于你自己使用的数据表,可以先以 Excel 形式写好,再转换一下就更容易了,省得在节点中一下一下的来添加了。
今天的热身就先到这里,下次我们找一个具体的应用来分析一下,下次再见~~







标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}