flash.xml
public class XMLDocument
继承XMLDocument Inheritance XMLNode Inheritance Object

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

XMLDocument 类表示 ActionScript 2.0 中存在的旧 XML 对象。它在 ActionScript 3.0 中被重命名为 XMLDocument,以避免与 ActionScript 3.0 中新的 XML 类出现名称冲突。在 ActionScript 3.0 中,建议使用新的 XML 类及相关类,这些类支持 E4X (ECMAScript for XML)。

使用 XMLDocument 类以及 XMLNode 和 XMLNodeType 是为了保持向后兼容。用于加载 XML 文档的功能现在可在 URLLoader 类中找到。

查看示例

另请参见

flash.net.URLLoader
XML 类


公共属性
 属性定义方
 Inheritedattributes : Object
一个对象,其中包含指定的 XMLNode 实例的所有属性。
XMLNode
 InheritedchildNodes : Array
[只读 (read-only)] 指定的 XMLNode 对象子级的数组。
XMLNode
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  docTypeDecl : Object = null
指定有关 XML 文档的 DOCTYPE 声明的信息。
XMLDocument
 InheritedfirstChild : XMLNode
计算指定的 XMLDocument 对象,并引用父节点的子级列表中的第一个子级。
XMLNode
  idMap : Object
一个对象,其中包含分配了 id 属性的 XML 的节点。
XMLDocument
  ignoreWhite : Boolean = false
当设置为 true 时,在分析过程中将放弃仅包含空白的文本节点。
XMLDocument
 InheritedlastChild : XMLNode
一个 XMLNode 值,它引用节点的子级列表中的最后一个子级。
XMLNode
 InheritedlocalName : String
[只读 (read-only)] XML 节点名称的本地名称部分。
XMLNode
 InheritednamespaceURI : String
[只读 (read-only)] 如果 XML 节点具有前缀,则 namespaceURI 为该前缀 (URI) 的 xmlns 声明的值,通常称为命名空间 URI。
XMLNode
 InheritednextSibling : XMLNode
一个 XMLNode 值,它引用父级节点的子级列表中的下一个同级。
XMLNode
 InheritednodeName : String
一个字符串,表示 XMLNode 对象的节点名称。
XMLNode
 InheritednodeType : uint
一个 nodeType 常数值,对于 XML 元素为 XMLNodeType.ELEMENT_NODE,对于文本节点为 XMLNodeType.TEXT_NODE。
XMLNode
 InheritednodeValue : String
XMLDocument 对象的节点值。
XMLNode
 InheritedparentNode : XMLNode
一个 XMLNode 值,它引用指定 XML 对象的父级节点;如果该节点没有父级,则返回 null。
XMLNode
 Inheritedprefix : String
[只读 (read-only)] XML 节点名称的前缀部分。
XMLNode
 InheritedpreviousSibling : XMLNode
一个 XMLNode 值,它引用父级节点的子级列表中的前一个同级。
XMLNode
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  xmlDecl : Object = null
一个字符串,指定有关文档的 XML 声明的信息。
XMLDocument
公共方法
 方法定义方
  
XMLDocument(source:String = null)
创建新的 XMLDocument 对象。
XMLDocument
 Inherited
将指定的节点追加到 XML 对象的子级列表中。
XMLNode
 Inherited
构造并返回一个类型、名称、值和属性与指定的 XML 对象均相同的新 XML 节点。
XMLNode
  
使用参数中指定的名称来创建新的 XMLNode 对象。
XMLDocument
  
使用指定的文本创建一个新的 XML 文本节点。
XMLDocument
 Inherited
返回与节点的指定前缀相关联的命名空间 URI。
XMLNode
 Inherited
返回与节点的指定命名空间 URI 相关联的前缀。
XMLNode
 Inherited
指示指定的 XMLNode 对象是否具有子节点。
XMLNode
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
将新的子节点插入到 XML 对象的子级列表中,且在 beforeNode 节点之前。
XMLNode
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
分析 value 参数中指定的 XML 文本,并使用结果 XML 树填充指定的 XMLDocument 对象。
XMLDocument
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
从指定 XML 对象的父级中删除该对象。
XMLNode
 Inherited
设置循环操作动态属性的可用性。
Object
  
返回 XML 对象的字符串表示形式。
XMLDocument
 Inherited
返回指定对象的原始值。
Object
属性详细信息
docTypeDecl属性
public var docTypeDecl:Object = null

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

指定有关 XML 文档的 DOCTYPE 声明的信息。在已经将 XML 文本分析为 XMLDocument 对象后,该 XMLDocument 对象的 XMLDocument.docTypeDecl 属性就会被设置为该 XML 文档的 DOCTYPE 声明的文本(例如,<!DOCTYPE greeting SYSTEM "hello.dtd">)。使用 DOCTYPE 声明的字符串表示形式而不是 XMLNode 对象设置该属性。

旧的 ActionScript 的 XML 分析程序不是具有验证功能的分析程序。分析程序读取 DOCTYPE 声明,并将其存储在 XMLDocument.docTypeDecl 属性中,但不执行 DTD 验证。

如果在分析操作过程中未遇到 DOCTYPE 声明,则 XMLDocument.docTypeDecl 属性被设置为 nullXML.toString() 方法将在 XML 声明存储在 XML.xmlDecl 中后,并在输出该 XML 对象中的任何其它文本之前,立即输出 XML.docTypeDecl 的内容。如果 XMLDocument.docTypeDecl 为空,则不输出 DOCTYPE 声明。

idMap属性 
public var idMap:Object

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

一个对象,其中包含分配了 id 属性的 XML 的节点。对象(每个对象包含一个节点)的属性 (property) 名称与 id 属性 (attribute) 的值匹配。

请考虑下面的 XMLDocument 对象:

<employee id='41'>
   <name>
    John Doe
   </name>
   <address>
    601 Townsend St.
   </address>
  </employee>
  
  <employee id='42'>
   <name>
    Jane Q. Public
   </name>
  </employee>
  <department id="IT">
   Information Technology
  </department>

在此示例中,该 XMLDocument 对象的 idMap 属性是具有以下三个属性的对象:4142IT。其中每个属性都是具有匹配的 id 值的 XMLNode。例如,idMap 对象的 IT 属性为下面的节点:

<department id="IT">
   Information Technology
  </department>

您必须对此 XMLDocument 对象使用 parseXML() 方法才能对 idMap 属性进行实例化。

如果多个 XMLNode 具有相同的 id 值,则 idNode 对象的匹配属性是分析的最后一个节点的属性。例如:

var x1:XML = new XMLDocument("<a id='1'><b id='2' /><c id='1' /></a>");
  x2 = new XMLDocument();
  x2.parseXML(x1);
  trace(x2.idMap['1']);
这将输出 <c> 节点:
            
            <c id='1' />
            
          

ignoreWhite属性 
public var ignoreWhite:Boolean = false

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

当设置为 true 时,在分析过程中将放弃仅包含空白的文本节点。带有前导或尾随空白的文本节点不受影响。默认设置为 false

可以为单个 XMLDocument 对象设置 ignoreWhite 属性,如以下代码所示:

my_xml.ignoreWhite = true;

xmlDecl属性 
public var xmlDecl:Object = null

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

一个字符串,指定有关文档的 XML 声明的信息。将 XML 文档分析为 XMLDocument 对象之后,此属性被设置为文档的 XML 声明的文本。使用 XML 声明的字符串表示形式而不是 XMLNode 对象设置该属性。如果在分析操作过程中未遇到 XML 声明,则该属性被设置为 nullXMLDocument.toString() 方法在输出 XML 对象中的任何其它文本之前输出 XML.xmlDecl 属性的内容。如果 XML.xmlDecl 属性包含 null,则不输出 XML 声明。

构造函数详细信息
XMLDocument()构造函数
public function XMLDocument(source:String = null)

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

创建新的 XMLDocument 对象。调用 XMLDocument 类的任何方法之前,必须使用该构造函数创建一个 XMLDocument 对象。

注意:使用 createElement()createTextNode() 方法可以将元素和文本节点添加到 XML 文档树中。

参数
source:String (default = null) — 经解析用以创建新 XMLDocument 对象的 XML 文本。

另请参见

方法详细信息
createElement()方法
public function createElement(name:String):XMLNode

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

使用参数中指定的名称来创建新的 XMLNode 对象。新节点开始时没有父级、子级和同级。该方法返回一个对新创建的表示该元素的 XMLNode 对象的引用。此方法和 XMLDocument.createTextNode() 方法都是为 XMLDocument 对象创建节点的构造函数方法。

参数

name:String — 要创建的 XMLDocument 元素的标签名称。

返回
XMLNode — XMLNode 对象。

另请参见

createTextNode()方法 
public function createTextNode(text:String):XMLNode

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

使用指定的文本创建一个新的 XML 文本节点。该新节点开始时没有父级,且文本节点不能有子级或同级。此方法返回对表示新文本节点的 XMLDocument 对象的引用。此方法和 XMLDocument.createElement() 方法都是为 XMLDocument 对象创建节点的构造函数方法。

参数

text:String — 用于创建新文本节点的文本。

返回
XMLNode — XMLNode 对象。

另请参见

parseXML()方法 
public function parseXML(source:String):void

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

分析 value 参数中指定的 XML 文本,并使用结果 XML 树填充指定的 XMLDocument 对象。XMLDocument 对象中任何现有的树将被放弃。

参数

source:String — 要分析并传递到指定的 XMLDocument 对象的 XML 文本。

toString()方法 
override public function toString():String

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

返回 XML 对象的字符串表示形式。

返回
String — XML 对象的字符串表示形式。
示例 如何使用示例
XMLDocumentExample.as

下例使用 XMLDocument 和 XMLNode 类分析 XML 文档并设置其格式。此示例并未加载外部 XML 文件,而是使用顶级 XML 类来创建 XML 文档,然后对该文档进行分析。
package {
    import flash.display.Sprite;
    import flash.xml.XMLDocument;
    import flash.xml.XMLNode;
    import flash.xml.XMLNodeType;

    public class XMLDocumentExample extends Sprite {
        public function XMLDocumentExample() {
            var result:XMLDocument = new XMLDocument();
            result.ignoreWhite = true;
            result.parseXML(getXMLString());

            var books:Array = parseBooks(result.firstChild);
            trace("books: \n" + books);
        }

        private function parseBooks(node:XMLNode):Array {
            var books:Array = new Array();

            var kids:Array = node.childNodes;
            for each(var item:XMLNode in kids) {
                parseBook(item, books);
            }

            return books;
        }

        private function parseBook(node:XMLNode, books:Array):void {
            var item:Book = new Book();
            item.setPublisher(node.attributes.publisher);
            item.setName(node.attributes.name);
            books.push(item);
        }

        private function getXMLString():String {
            var list:XML = <books>
                                <book publisher="Addison-Wesley" name="Design Patterns" />
                                <book publisher="Addison-Wesley" name="The Pragmatic Programmer" />
                                <book publisher="Addison-Wesley" name="Test Driven Development" />
                                <book publisher="Addison-Wesley" name="Refactoring to Patterns" />
                                <book publisher="O'Reilly Media" name="The Cathedral & the Bazaar" />
                                <book publisher="O'Reilly Media" name="Unit Test Frameworks" />
                            </books>;
            return list.toXMLString();
        }
    }

}
class Book {
    private var publisher:String;
    private var name:String;

    public function setPublisher(publisher:String):void {
        this.publisher = publisher;
    }

    public function setName(name:String):void {
        this.name = name;
    }

    public function toString():String {
        return "[Book name: " + name + " publisher: " + publisher + "]\n";
    }
}