AS解析XML学习笔记

把自己学习XML的过程记录一下。

 

 

 

 

一、解析XML字符串

 

 

<div id="06">

 

 

<name>sshc625</name>

 

 

<age>88</age>

 

 

<sex>male</sex>

 

 

<h2>

 

 

<a name="abstract" id="abstract" shape="rect" />

 

 

Abstract

 

 

</h2>

 

 

</div>

 

 

这是我随便乱写的一个XML格式的字符传。步骤如下:

 

 

建立xmlTest. fla

 

 

 

 

// 注意,这里是用单引号('')把这个字符串引起来的。

 

 

// 当然,双引号也是可以的,但是为什么不用双引号呢?

 

 

// 仔细看看这个XML字符串就知道原因了。

 

 

// 因为,这个字符串里头有双引号了。

 

 

// 这个是XML的知识,就不讲解了。

 

 

var xmlStr:String = '<div id="06"><name>sshc625</name><age>88</age><sex>male</sex><h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2></div>';

 

 

// 建立XML对象

 

 

var myXML:XML = new XML(xmlStr);

 

 

 

 

trace(myXML);

 

 

trace(myXML.firstChild);

 

 

trace(myXML.firstChild.firstChild);

 

 

trace(myXML.firstChild.lastChild);

 

 

 

 

var nodeArray:Array = new Array();

 

 

nodeArray = myXML.firstChild.childNodes;

 

 

for(var i:Number=0; i<nodeArray.length; i++)

 

 

{

 

 

    trace(i + " ==== " + nodeArray[i]);

 

 

}

 

 

 

 

trace(myXML.firstChild.attributes.id );

 

 

 

 

 

 

 

 

output:

 

 

=======================================================

 

 

<div id="06"><name>sshc625</name><age>88</age><sex>male</sex><h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2></div>

 

 

<div id="06"><name>sshc625</name><age>88</age><sex>male</sex><h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2></div>

 

 

<name>sshc625</name>

 

 

<h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2>

 

 

0 ==== <name>sshc625</name>

 

 

1 ==== <age>88</age>

 

 

2 ==== <sex>male</sex>

 

 

3 ==== <h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2>

 

 

06

 

 

 

 

 

 

好,现在我们来分析一下

 

 

我们可以看到

 

 

trace(myXML);

 

 

trace(myXML.firstChild);

 

 

得到的结果是一样的。呵呵,myXMLfirstChild就是整个XML字符串了。

 

 

 

 

再来看

 

 

trace(myXML.firstChild.firstChild);

 

 

trace(myXML.firstChild.lastChild);

 

 

得到的结果

 

 

<name>sshc625</name>

 

 

<h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2>

 

 

从字面上和结果上都不难理解他们的意思

 

 

 

 

现在看看

 

 

var nodeArray:Array = new Array();

 

 

nodeArray = myXML.firstChild.childNodes;

 

 

for(var i:Number=0; i<nodeArray.length; i++)

 

 

{

 

 

    trace(i + " ==== " + nodeArray[i]);

 

 

}

 

 

这段代码是取得_root的所有孩子节点。返回为一个数组。

 

 

从结果上来看,也确实如此。

 

 

0 ==== <name>sshc625</name>

 

 

1 ==== <age>88</age>

 

 

2 ==== <sex>male</sex>

 

 

3 ==== <h2><a name="abstract" id="abstract" shape="rect" /> Abstract </h2>

 

 

 

 

看看这行代码

 

 

trace(myXML.firstChild.attributes.id );

 

 

结果为

 

 

06

 

 

那么,我们知道了怎么获得属性。

 

 

是通过节点的attributes来获得的。

 

 

attributes实际是一个Object

 

 

可能会有人认为它是一个Array,那么可以尝试一下:

 

 

trace(myXML.firstChild.attributes[0]);

 

 

得到了

 

 

undefined

 

 

 

 

最后一个

 

 

如果我想获得

 

 

<h2>

 

 

<a name="abstract" id="abstract" shape="rect" />

 

 

Abstract

 

 

</h2>

 

 

里头的文本内容怎么办呢?

 

 

trace(myXML.firstChild.childNodes[3].lastChild);

 

 

trace(myXML.firstChild.childNodes[3].childNodes[1].nodeValue);

 

 

这两行代码都可以做到这点。

 

 

Abstract

 

 

Abstract

 

 

在这里,需要注意的是文本是一个节点,在XML解析里头,它是作为一个节点出现的。

 

 

比如说:

 

 

1 <a>

 

 

2

 

 

3 <b>1</b>

 

 

4 <c>2</c>

 

 

5 100

 

 

6 </a>

 

 

a节点有多少个孩子?4个。为什么,因为第2行的空白和第5行的100都是它的孩子。

 

 

它们都是节点。

 

 

 

 

 

 

二、解析XML文档

 

 

 

 

事先建立好一个XML文档,test.xml,把它和FLA文件放在同一个目录下。

 

 

var myXML:XML = new XML();

 

 

myXML.onLoad = function(success)

 

 

{

 

 

    if(success)

 

 

    {

 

 

        // 与上面的讲解类似

 

 

    }

 

 

    else

 

 

    {

 

 

        trace("failed");

 

 

    }

 

 

}

 

 

myXML.load("test.xml");

 

 

 

 

完毕!^_^

 

 

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=517891

posted on 2007-03-05 14:53  Ameng  阅读(497)  评论(0)    收藏  举报