【问题标题】:How to specify a namespace for XML::child()?如何为 XML::child() 指定命名空间?
【发布时间】:2014-04-04 23:26:34
【问题描述】:

函数XML::child()接受一个Object参数来指定要获取的子元素的名称。
但是,如果有命名空间,似乎没有办法指定命名空间。
我什至尝试过XML::setNamespace()default xml namespace,但也没有用。
我使用 E4X 解决了这个问题,但这不是我的首选。

XML:

<svg xmlns="http://www.w3.org/2000/svg">
  <path d= "..." />
  <anotherElement />
  <path d="..." />
</svg>  

作为:

var svg: XML = new XML( svgData ); // read from the XML file above
var ns: Namespace = new Namespace( "http://www.w3.org/2000/svg" );
svg.setNamespace( ns ); // doesn't seem to help
default xml namespace = ns; // doesn't help either
var child:* = svg.child( "path" ); // how to specify namespace?
var child2:* = svg.ns:path; // works, but I'd rather use the XML class API

【问题讨论】:

  • 您能否更具体地说明您想将命名空间用于什么目的?我不明白你的“首选选项”是什么,因为svg.ns::path 工作正常..
  • 我不想使用命名空间,我必须这样做,SVG 文件必须具有该命名空间。没什么好理解的,我尝试过 E4X 解决方案,我知道它有效,我只是对另一种方式感到好奇,因为它应该适用于任何 XML,无论有无命名空间,但文档似乎没有解决这个问题。

标签: xml actionscript-3 e4x


【解决方案1】:

我已经用use namespace ns; 尝试过,但这也无济于事。但是default xml namespace = ns 确实毕竟有帮助:

        var svg:XML = 
            <svg xmlns="http://www.w3.org/2000/svg">
              <path d= "..." />
              <anotherElement />
              <path d="..." />
            </svg>;  

        var ns: Namespace = new Namespace( "http://www.w3.org/2000/svg" );

        default xml namespace = ns; // helps after all
        var child:XML = svg.child( "path" )[0];

        trace(child.toXMLString());
        // -> outputs <path d="..." xmlns="http://www.w3.org/2000/svg"/>

svg.child("path") 给出一个包含两个&lt;path ... /&gt; 条目的 XMLList;我只是将您的代码更改为仅输出第一项。

我已经在带有 AIR SDK 3.8 的 Flash Builder 4.7 中尝试过这个

【讨论】:

    【解决方案2】:

    您正在处理default 命名空间,对于此类任务,您可以使用default xml namespace 指令:

    var myNamespace:Namespace = new Namespace("http://www.w3.org/2000/svg");
    default xml namespace = myNamespace;
    
    //dealing with XML
    
    default xml namespace = "";
    

    【讨论】:

    • 谢谢,但正如我在问题中所写:default xml namespace = ns; // doesn't help either
    猜你喜欢
    • 2013-08-21
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2021-09-23
    • 2014-03-14
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多