顶级
public final class QName
继承QName Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

QName 对象表示 XML 元素和属性的限定名。每个 QName 对象都具有一个本地名称和一个命名空间统一资源标识符 (URI)。命名空间 URI 的值为 null 时,QName 对象可与任意命名空间匹配。使用 QName 构造函数创建新的 QName 对象,该对象可以是另一个 QName 对象的副本,也可以是带有来自 Namespace 对象的 uri 和来自 QName 对象的 localName 的新 QName 对象。

特定于 E4X 的方法可以交替使用 QName 对象和字符串。E4X 方法位于 QName、Namespace、XML 和 XMLList 类中。这些 E4X 方法,既可以获取字符串,也可以获取 QName 对象。这种互换性说明了命名空间如何支持诸如 XML.child() 方法的使用。

QName 类(与 XML、XMLList 和 Namespace 类一起)可实现强大的 XML 处理标准,该标准在 XML (E4X) 规范(ECMA-357 第 2 版)的 ECMAScript 中定义。

限定标识符的计算结果为 QName 对象。如果指定了 XML 元素的 QName 对象而未标识命名空间,则将关联的 QName 对象的 uri 属性设置为全局默认命名空间。如果指定了 XML 属性的 QName 对象而未标识命名空间,则将 uri 属性设置为空字符串。

查看示例

另请参见

XML
XMLList
Namespace
ECMAScript for XML (E4X) specification (ECMA-357 edition 2)


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  localName : String
[只读 (read-only)] QName 对象的局部名称。
QName
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  uri : String
[只读 (read-only)] QName 对象的统一资源标识符 (URI)。
QName
公共方法
 方法定义方
  
QName(uri:Namespace, localName:QName)
使用 Namespace 对象中的 URI 对象和 QName 对象中的 localName 创建一个 QName 对象。
QName
  
QName(qname:QName)
创建一个 QName 对象,该对象是另一个 QName 对象的副本。
QName
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
  
返回一个包含 URI 的字符串和 QName 对象的局部名称(用“::”分隔)。
QName
  
返回 QName 对象。
QName
属性详细信息
localName属性
localName:String  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

QName 对象的局部名称。



实现
    public function get localName():String
uri属性 
uri:String  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

QName 对象的统一资源标识符 (URI)。



实现
    public function get uri():String
构造函数详细信息
QName()构造函数
public function QName(uri:Namespace, localName:QName)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

使用 Namespace 对象中的 URI 对象和 QName 对象中的 localName 创建一个 QName 对象。如果任一参数不是预期的数据类型,则该参数将转换为字符串并分配给新 QName 对象的相应属性。 例如,如果两个参数均为字符串,则将返回 uri 属性设置为第一参数且 localName 属性设置为第二参数的新 QName 对象。换言之,使用以下数据类型及其它数据类型的 uri 和 localName 参数组合都是构造函数的有效形式:

QName (uri:Namespace, localName:String);
QName (uri:String, localName: QName);
QName (uri:String, localName: String);

如果将 null 传递给 uri 参数,则新 QName 对象的 uri 属性将设置为 null

注意:因为每种形式接受不同的参数,所以此类显示两个构造函数项。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。

参数
uri:Namespace — 将从其复制 uri 值的 Namespace 对象。 任何其它类型的参数将转换为字符串。
 
localName:QName — 将从其复制 localName 值的 QName 对象。任何其它类型的参数将转换为字符串。
QName()构造函数 
public function QName(qname:QName)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建一个 QName 对象,该对象是另一个 QName 对象的副本。如果传递给构造函数的参数是 QName 对象,则将创建 QName 对象的一个副本。如果该参数不是 QName 对象,则将其转换为字符串并分配给新 QName 实例的 localName 属性。如果参数是 undefined 或未指定,则将创建 localName 属性设置为空字符串的新 QName 对象。

注意:因为每种形式接受不同的参数,所以此类显示两个构造函数项。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。

参数
qname:QName — 要复制的 QName 对象。任何其它类型的对象都将转换为分配给新 QName 对象的属性 localName 的字符串。
方法详细信息
toString()方法
AS3 function toString():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回一个包含 URI 的字符串和 QName 对象的局部名称(用“::”分隔)。

格式取决于 QName 对象的 uri 属性:

If uri == "" 
  toString returns localName
 else if uri == null
  toString returns *::localName 
 else
  toString returns uri::localName

返回
String — 限定名称为字符串。
valueOf()方法 
AS3 function valueOf():QName

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回 QName 对象。

返回
QName — QName 实例的原始值。
示例 如何使用示例
QNameExample.as

下面的示例说明如何创建 QName 实例,并使用它选择 XML 元素。下面说明了创建 QName 的两种方法:
  1. 创建 Namespace 实例,然后将其用作 QName 构造函数的输入。如果稍后要将 Namespace.prefix 属性用作其它目的,则此方法是最佳方法。
  2. 使用 QName 构造函数中 uri 参数的简单字符串值创建 QName 实例。

此代码将执行以下操作:

  1. 定义一个 XML 变量,名为 rssXML
  2. 创建一个新 Namespace 对象,其前缀为 dc
  3. 创建新的 QName 对象,方法是使用 Namespace 对象和本地名称 creator
  4. 调用 showDescendants() 方法,该方法使用 XML.descendants() 方法获取一个 XMLList 实例,其中包含限定名称与给定的 QName 实例相匹配的所有后代元素。
  5. 显示列表中每个元素的限定名称和文本值(使用 for each 循环)。
  6. 使用 uri 参数的字符串值和局部名称 date 创建另一个 QName 对象。
  7. 再次调用 showDescendants() 方法以显示后代元素的名称和文本值。
package
{
    import flash.display.Sprite;
    
    public class QNameExample extends Sprite
    {
        public function QNameExample()
        {
            var rssXML:XML =  <rdf:RDF
              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
              xmlns="http://purl.org/rss/1.0/"
              xmlns:dc="http://purl.org/dc/elements/1.1/">
              <channel rdf:about="http://www.xml.com/cs/xml/query/q/19">
                <title>Test RSS</title>
                <link>http://www.adobe.com/</link>
                <description>This is a test RSS document.</description>
                <language>en-us</language>
                <items>
                  <rdf:Seq>
                <rdf:li rdf:resource="http://www.adobe.com/devnet/flash/"/>
                <rdf:li rdf:resource="http://www.adobe.com/devnet/flex/"/>
                  </rdf:Seq>
                </items>
              </channel>
              <item rdf:about="http://www.adobe.com/devnet/flash/">
                <title>Flash Developer Center</title>
                <link>http://www.adobe.com/devnet/flash/</link>
                <description>Welcome to the Flash Developer Center</description>
                <dc:creator>Adobe</dc:creator>
                <dc:date>2005-08-08</dc:date>    
              </item>
              <item rdf:about="http://www.adobe.com/devnet/flex/">
                <title>Flex Developer Center</title>
                <link>http://www.adobe.com/devnet/flex/</link>
                <description>Welcome to the Flex Developer Center</description>
                <dc:creator>Adobe</dc:creator>
                <dc:date>2005-10-16</dc:date>    
              </item>
            </rdf:RDF>;
            
            var dcNamespace:Namespace = new Namespace("dc", "http://purl.org/dc/elements/1.1/");
            var creatorQName:QName = new QName(dcNamespace, "creator");
            trace(creatorQName.uri); // http://purl.org/dc/elements/1.1/
            trace(creatorQName.localName); // creator
            
            showDescendants(rssXML, creatorQName);
            
            var dateQName:QName = new QName("http://purl.org/dc/elements/1.1/", "date");
            trace(dateQName.uri); // http://purl.org/dc/elements/1.1/
            trace(dateQName.localName); // date
            
            showDescendants(rssXML, dateQName);
        }
        
        public function showDescendants(xmlData:XML, qualifiedName:QName):void
        {
            var decendantList:XMLList = xmlData.descendants(qualifiedName);
            
            for each (var element:XML in decendantList)
            {
                trace(element.name()); // the fully qualified name, 
                                       // like "http://purl.org/dc/elements/1.1/::creator"
                trace(element); // the simple text value of each element, like "Adobe"
            }                
        }
    }
}