您的位置:首页 > 移动开发 > Objective-C

使用XML、Array、Object对象处理xml杂谈——实例讨论

2006-07-31 17:03 465 查看
something.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<questions>
<question sth="The People's Republic of China..."/>
<question sth="I need one more stamp..."/>
<question sth="All the new computers..."/>
</questions>

在Flash中使用XML对象:
var my_xml = new XML();
var idx = 0;
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
if (success) {
trace(this.firstChild.childNodes[idx].attributes.sth);
//访问question节点的sth属性。
}
};
my_xml.load("something.xml");
当需要遍历访问xml时,比较遗憾!它没有length属性,而Array对象有。我们把它转成Array:
var my_xml = new XML();
var my_array = new Array();
var xmlLength = 0;
var idx = 0;
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
if (success) {
while (this.firstChild.childNodes[xmlLength]) {
my_array.push(this.firstChild.childNodes[xmlLength]);
xmlLength++;
}
trace(my_array[idx].attributes.sth);
//此时访问question节点的sth属性的方法有所改变。
}
};
my_xml.load("question.xml");
再看看Object:
var my_xml = new XML();
var my_obj = new Object();
var idx = 0;
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
if (success) {
my_obj = this;
trace(my_obj.firstChild.childNodes[idx].attributes.sth);
//这里访问question节点的sth属性的方法与使用XML对象完全一致。但这里的my_obj一旦改变,my_xml也随之改变,反之亦然。
}
};
my_xml.load("question.xml");
比较三者,本人推荐使用Array。

ps: 发布设置为Flash Player 6时不支持“
”软回车符(即某些文本编辑器如sepy的换行符,在记事本中是一个小黑疙瘩),Flash Player 7及以上版本支持。

当需要遍历访问xml时,比较遗憾!它没有length属性,而Array对象有

错了 XML有一个length 属性

可以通过
Myxml = new XML();
Myxml.onLoad = function(success) {
if (success) {
secxml = myxml.firstChild.childNodes;
l = secxml.length;
trace(........)
.......

}
};

还可以直接输出它的长度:
trace(this.firstChild.childNodes.length);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: