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

誰がこれを引き起こすのか知っていますか?例としてアトムを使用しましたが、ルート ノードの「xmlns」属性にはこの効果があるようです。返される値は、まったくの false です。親が所有する属性に関係なく、明らかに 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 に答える