【问题标题】:Access second child of XML containing namespace using AS3使用 AS3 访问包含命名空间的 XML 的第二个子项
【发布时间】:2014-02-27 04:32:17
【问题描述】:

我的 XML 看起来像这样:

<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<Item>
      <SmallImage>
        <URL>http://ecx.images-amazon.com/images/I/51PF6C7Bq3L._SL75_.jpg</URL>
      </SmallImage>
</Item>

因为这个 XML 包含命名空间,所以我的 AS3 代码是这样设置的:

//  after loading data 

    XML.ignoreProcessingInstructions = false;
    var raw2:XML = new XML( loa2.data );

    var nameSpace:Namespace = new Namespace("http://webservices.amazon.com/AWSECommerceService/2011-08-01");

    trace(raw2.nameSpace::Item.length());

    //  returns 1

我不知道如何跟踪 URL 等子参数的值

类似

    trace(raw2.nameSpace::Item.SmallImage.URL);

这不起作用,任何建议都会回答我接下来的 100 个问题。

【问题讨论】:

    标签: xml actionscript-3 namespaces


    【解决方案1】:

    是的,我不确定是否可以做到。

    所以我编辑了命名空间:

    var strr:String = loa2.data.replace( /xmlns="(.+?)"/, "" );
    raw2 = new XML( strr );
    

    无论如何谢谢。

    【讨论】:

      【解决方案2】:

      我是这样做的:

      1. 创建一个命名空间文件并将其命名为amazonWebServices.as:

        package {
            public namespace amazonWebServices = "http://webservices.amazon.com/AWSECommerceService/2011-08-01"
        }
        
      2. 在您解析 xml 的类中,使用该命名空间:

        use namespace amazonWebServices;
        trace(raw2.Item.length());
        

      现在您要从 xml 对象中检索的所有项目,默认为该 Amazon namespace,因此您不必在每个语句中显式使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多