| 包 | 顶级 |
| 类 | public final class QName |
| 继承 | QName Object |
| 语言版本 : | ActionScript 3.0 |
| Player 版本 : | Flash Player 9 |
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 属性设置为空字符串。
QNameExample.as
下面的示例说明如何创建 QName 实例,并使用它选择 XML 元素。 下面说明了创建 QName 的两种方法:
- 创建 Namespace 实例,然后将其用作 QName 构造函数的输入。 如果稍后要将
Namespace.prefix属性用作其它目的,则此方法是最佳方法。 - 使用 QName 构造函数中
uri参数的简单字符串值创建 QName 实例。
此代码将执行以下操作:
- 定义一个 XML 变量,名为
rssXML。 - 创建一个新 Namespace 对象,其前缀为
dc。 - 创建新的 QName 对象,方法是使用 Namespace 对象和本地名称
creator。 - 调用
showDescendants()方法,该方法使用XML.descendants()方法获取一个 XMLList 实例,其中包含限定名称与给定的 QName 实例相匹配的所有后代元素。 - 显示列表中每个元素的限定名称和文本值(使用
for each循环)。 - 使用
uri参数的字符串值和局部名称date创建另一个 QName 对象。 - 再次调用
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"
}
}
}
}