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

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);

你可能感兴趣的:(object)