3

想看一些有趣的东西吗?

var xml:XML = XML(<feed><entry /><entry /><entry /></feed>);
trace(xml.entry.length())   // returns 3

有道理,对吧?现在让我们添加这个属性...

var xml:XML = XML(<feed xmlns="http://www.w3.org/2005/Atom"><entry /><entry /><entry /></feed>);
trace(xml.entry.length())   // returns 0

那不可能。让我们尝试使用不同的属性。

var xml:XML = XML(<feed test="okay"><entry /><entry /><entry /></feed>);
trace(xml.entry.length())   // returns 3

有谁知道这是什么原因造成的?我以 atom 为例,但根节点上的任何 'xmlns' 属性似乎都有这种效果。返回的值是错误的——显然仍然有 3 个“入口”子节点,不管它们的父节点拥有什么属性。

4

1 回答 1

10

以下是可能的解决方法:

var xml:XML = XML(<feed xmlns="http://www.w3.org/2005/Atom"><entry /><entry /><entry /></feed>) ;
trace(xml.entry.length()) ;
// output: 0

var ATOM:Namespace = new Namespace( "http://www.w3.org/2005/Atom" );
trace(xml.ATOM::entry.length()) ;
// output: 3

default xml namespace = ATOM;
trace(xml.entry.length()) ;
// output: 3

更新

LiveDocs.Adobe.Com

于 2010-01-21T21:31:14.787 回答