代码之家  ›  专栏  ›  技术社区  ›  matt lohkamp

atom提要xmlns属性会弄乱AS3的XML解析吗?

  •  3
  • matt lohkamp  · 技术社区  · 15 年前

    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个“entry”子节点,而不管它们的父节点拥有哪些属性。

    1 回复  |  直到 9 年前
        1
  •  10
  •   St.Woland    15 年前

    以下是可能的解决办法:

    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