atom feed xmlns属性搞砸了AS3的XML解析?

时间:2010-01-21 21:11:34

标签: xml actionscript-3 parsing rss xml-namespaces

想看到有趣的东西吗?

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个“条目”子节点,无论父母拥有什么属性。

1 个答案:

答案 0 :(得分: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