使用 XML 命名空间

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

XML 对象(或文档)中的命名空间用于标识对象所包含的数据的类型。例如,在将 XML 数据发送和提交给使用 SOAP 消息传递协议的 Web 服务时,您要在 XML 的开始标签中声明命名空间:

var message:XML =  
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
        <soap:Body xmlns:w="http://www.test.com/weather/"> 
            <w:getWeatherResponse>  
                <w:tempurature >78</w:tempurature>  
            </w:getWeatherResponse>  
        </soap:Body>  
    </soap:Envelope>;

命名空间有一个前缀 soap 和一个定义该命名空间的 URI http://schemas.xmlsoap.org/soap/envelope/

ActionScript 3.0 包含用于使用 XML 命名空间的命名空间类。对于上一示例中的 XML 对象,可按如下方式使用命名空间类:

var soapNS:Namespace = message.namespace("soap"); 
trace(soapNS); // Output: http://schemas.xmlsoap.org/soap/envelope/ 
 
var wNS:Namespace = new Namespace("w", "http://www.test.com/weather/"); 
message.addNamespace(wNS); 
var encodingStyle:XMLList = message.@soapNS::encodingStyle; 
var body:XMLList = message.soapNS::Body; 
 
message.soapNS::Body.wNS::GetWeatherResponse.wNS::tempurature = "78";

XML 类包含下列可与命名空间一起使用的方法:addNamespace()inScopeNamespaces()localName()name()namespace()namespaceDeclarations()removeNamespace()setLocalName()setName()setNamespace()

使用 default xml namespace 指令可为 XML 对象指定默认命名空间。例如,在以下代码中,x1x2 具有相同的默认命名空间:

var ns1:Namespace = new Namespace("http://www.example.com/namespaces/"); 
default xml namespace = ns1; 
var x1:XML = <test1 />; 
var x2:XML = <test2 />;