函数XML::child()
接受一个Object参数来指定要获取的子元素的名称。
但是,如果有一个命名空间,似乎无法指定命名空间
我甚至尝试了XML::setNamespace()
和default xml namespace
,但也没有尝试过
我使用E4X解决了这个问题,但它并不是我的首选。
XML:
<svg xmlns="http://www.w3.org/2000/svg">
<path d= "..." />
<anotherElement />
<path d="..." />
</svg>
AS
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
答案 0 :(得分: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")
给出一个包含<path ... />
条目的XMLList;我刚刚更改了你的代码,只输出了第一项。
我已经在Flash Builder 4.7中使用AIR SDK 3.8
尝试了这一点答案 1 :(得分:0)
您正在处理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 = "";