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.
// 注意,这里是用单引号('')把这个字符串引起来的。
// 当然,双引号也是可以的,但是为什么不用双引号呢?
// 仔细看看这个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);
得到的结果是一样的。呵呵,myXML的firstChild就是整个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
浙公网安备 33010602011771号