| 运行时版本: | AIR 1.0 Flash Player 9 |
XML 类包含用于处理 XML 对象的方法和属性。XML 类(以及 XMLList、Namespace 和 QName 类)可实现 ECMAScript for XML (E4X) 规范(ECMA-357 第 2 版)中定义的强大的 XML 处理标准。
使用 toXMLString() 方法可返回 XML 对象的字符串表示形式,不管该 XML 对象具有简单内容还是复杂内容。
注意:ActionScript 2.0 中的 XML 类(以及相关类)已重命名为 XMLDocument 并移到 flash.xml 包中。它包含在 ActionScript 3.0 中,以实现向后兼容。
查看示例
ignoreComments:Boolean [读写]
| 运行时版本: | AIR 1.0 Flash Player 9 |
确定当 XML 对象分析源 XML 数据时,是否忽略 XML 注释。默认情况下,将忽略注释 (true)。若要包括 XML 注释,请将此属性设置为 false。ignoreComments 属性仅在 XML 分析过程中使用,而不能在调用任何方法(例如,myXMLObject.child(*).toXMLString())时使用。如果源 XML 包含注释节点,可在 XML 分析过程中保留或丢弃这些节点。
实现 public static function get ignoreComments():Boolean public function set ignoreComments(value:Boolean):void另请参见
示例 本示例演示将
XML.ignoreComments 设置为
false 以及设置为
true 的效果:
XML.ignoreComments = false;
var xml1:XML =
<foo>
<!-- comment -->
</foo>;
trace(xml1.toXMLString()); // <foo><!-- comment --></foo>
XML.ignoreComments = true;
var xml2:XML =
<foo>
<!-- example -->
</foo>;
trace(xml2.toXMLString()); // <foo/>ignoreProcessingInstructions:Boolean [读写]
| 运行时版本: | AIR 1.0 Flash Player 9 |
确定当 XML 对象分析源 XML 数据时,是否忽略 XML 处理指令。默认情况下,将忽略处理指令 (true)。若要包括 XML 处理指令,请将此属性设置为 false。ignoreProcessingInstructions 属性仅在 XML 分析过程中使用,而不能在调用任何方法(例如,myXMLObject.child(*).toXMLString())时使用。如果源 XML 包含处理指令节点,可在 XML 分析过程中保留或丢弃这些节点。
实现 public static function get ignoreProcessingInstructions():Boolean public function set ignoreProcessingInstructions(value:Boolean):void另请参见
示例 本示例演示将
XML.ignoreProcessingInstructions 设置为
false 以及设置为
true 的效果:
XML.ignoreProcessingInstructions = false;
var xml1:XML =
<foo>
<?exampleInstruction ?>
</foo>;
trace(xml1.toXMLString()); // <foo><?exampleInstruction ?></foo>
XML.ignoreProcessingInstructions = true;
var xml2:XML =
<foo>
<?exampleInstruction ?>
</foo>;
trace(xml2.toXMLString()); // <foo/>ignoreWhitespace:Boolean [读写]
| 运行时版本: | AIR 1.0 Flash Player 9 |
确定分析期间是否忽略文本节点开头和末尾处的空白字符。默认情况下,将忽略空白 (true)。如果文本节点 100% 是空白,且 ignoreWhitespace 属性设置为 true,则不会创建该节点。若要显示文本节点中的空白,请将 ignoreWhitespace 属性设置为 false。
实现 public static function get ignoreWhitespace():Boolean public function set ignoreWhitespace(value:Boolean):void 示例 本示例演示将
XML.ignoreWhitespace 设置为
false 以及设置为
true 的效果:
XML.ignoreWhitespace = false;
var xml1:XML = <foo> </foo>;
trace(xml1.children().length()); // 1
XML.ignoreWhitespace = true;
var xml2:XML = <foo> </foo>;
trace(xml2.children().length()); // 0
prettyIndent:int [读写]
| 运行时版本: | AIR 1.0 Flash Player 9 |
确定当 XML.prettyPrinting 属性设置为 true 时,toString() 和 toXMLString() 方法所应用的缩进量。应用缩进时使用空格字符,而不是制表符。默认值为 2。
实现 public static function get prettyIndent():int public function set prettyIndent(value:int):void另请参见
示例 本示例演示设置
XML.prettyIndent 静态属性的效果:
var xml:XML = <foo><bar/></foo>;
XML.prettyIndent = 0;
trace(xml.toXMLString());
XML.prettyIndent = 1;
trace(xml.toXMLString());
XML.prettyIndent = 2;
trace(xml.toXMLString());
prettyPrinting:Boolean [读写]
| 运行时版本: | AIR 1.0 Flash Player 9 |
确定 toString() 和 toXMLString() 方法是否对某些标签之间的空白字符进行规格化。默认值为 true。
实现 public static function get prettyPrinting():Boolean public function set prettyPrinting(value:Boolean):void另请参见
示例 本示例演示设置
XML.prettyPrinting 静态属性的效果:
var xml:XML = <foo><bar/></foo>;
XML.prettyPrinting = false;
trace(xml.toXMLString());
XML.prettyPrinting = true;
trace(xml.toXMLString());
public function XML(value:Object)| 运行时版本: | AIR 1.0 Flash Player 9 |
创建一个新的 XML 对象。调用 XML 类的方法之前,必须使用该构造函数创建一个 XML 对象。
使用 toXMLString() 方法可返回 XML 对象的字符串表示形式,不管该 XML 对象具有简单内容还是复杂内容。
参数 | value:Object — 可通过顶级 XML() 函数转换为 XML 的任意对象。
|
另请参见
AS3 function addNamespace(ns:Object):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
可将命名空间添加到该 XML 对象所在范围的命名空间集中。如果 XML 对象(其前缀与给定参数的前缀匹配)所在范围的命名空间中已存在该命名空间,则现有命名空间的前缀将设置为 undefined。如果输入参数是一个 Namespace 对象,则直接使用该参数。如果它是一个 QName 对象,则使用输入参数的 URI 创建新的命名空间;否则,会将它转换为一个 String 值并根据该 String 值创建命名空间。
参数
| ns:Object — 要添加到 XML 对象中的命名空间。
|
返回另请参见
示例 下面的示例使用在 XML 对象中定义的命名空间,并将其应用于另一个 XML 对象:
var xml1:XML = <ns:foo xmlns:ns="www.example.com/ns" />;
var nsNamespace:Namespace = xml1.namespace();
var xml2:XML = <bar />;
xml2.addNamespace(nsNamespace);
trace(xml2.toXMLString()); // <bar xmlns:ns="www.example.com/ns"/>
AS3 function appendChild(child:Object):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
将给定子项追加到该 XML 对象属性的末尾。appendChild() 方法可采用 XML 对象、XMLList 对象或随后转换为 String 的任何其它数据类型。
使用 delete (XML) 运算符删除 XML 节点。
参数
返回另请参见
示例 下面的示例向 XML 对象的子级列表的末尾追加一个新元素:
var xml:XML =
<body>
<p>hello</p>
</body>;
xml.appendChild(<p>world</p>);
trace(xml.p[0].toXMLString()); // <p>hello</p>
trace(xml.p[1].toXMLString()); // <p>world</p> AS3 function attribute(attributeName:*):XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
返回其名称与 attributeName 参数相符的属性的 XML 值。可在 XML 元素内找到属性。在以下示例中,元素具有名为“gender”的属性,其值为“boy”:<first gender="boy">John</first>。
attributeName 参数可以是任何数据类型;但 String 是最常用的数据类型。在传递 QName 对象之外的任何对象时,attributeName 参数会使用 toString() 方法将参数转换为字符串。
如果需要一个限定名称引用,可以传入 QName 对象。QName 对象可定义命名空间和本地名称,还可定义属性的限定名称。因此,调用 attribute(qname) 不同于调用 attribute(qname.toString())。
参数
返回 | XMLList — 一个 XMLList 对象或空的 XMLList 对象。在未定义属性值时返回一个空的 XMLList 对象。
|
另请参见
示例 本示例演示如何将 QName 对象传递给
attribute() 方法。
localName 属性为
attr,
namespace 属性为
ns。
var xml:XML = <ns:node xmlns:ns = "http://uri" ns:attr = '7' />
var qn:QName = new QName("http://uri", "attr");
trace (xml.attribute(qn)); // 7 若要返回名称与 ActionScript 保留字匹配的属性,请使用
attribute() 方法替代属性标识符 (@) 运算符,如下面的示例所示:
var xml:XML = <example class="first" />
trace(xml.attribute("class"));
AS3 function attributes():XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
返回给定 XML 对象的属性值列表。结合使用 name() 方法和 attributes() 方法可返回属性的名称。 使用 xml.attributes() 等效于 xml.@*。
返回另请参见
示例 下面的示例返回属性的名称:
var xml:XML=<example id='123' color='blue'/>
trace(xml.attributes()[1].name()); //color
下面的示例返回所有属性的名称:
var xml:XML = <example id='123' color='blue'/>
var attNamesList:XMLList = xml.@*;
trace (attNamesList is XMLList); // true
trace (attNamesList.length()); // 2
for (var i:int = 0; i < attNamesList.length(); i++)
{
trace (typeof (attNamesList[i])); // xml
trace (attNamesList[i].nodeKind()); // attribute
trace (attNamesList[i].name()); // id and color
}
AS3 function child(propertyName:Object):XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
列出 XML 对象的子项。一个 XML 子项就是一个 XML 元素、文本节点、注释或处理指令。
使用 propertyName 参数可列出特定 XML 子项的内容。例如,若要返回名为 <first> 的子项的内容,可使用 child.name("first")。使用子项的索引编号,可以生成相同的结果。索引编号标识该子项在其它 XML 子项列表中的位置。例如,name.child(0) 将返回列表中的第一个子项。
使用星号 (*) 可输出 XML 文档中的所有子项。例如,doc.child("*")。
结合使用 length() 方法与 child() 方法的星号 (*) 参数可输出子项的总数。例如,numChildren = doc.child("*").length()。
参数
| propertyName:Object — XML 子对象的元素名称或整数。
|
返回另请参见
示例 本示例演示如何使用
child() 方法识别具有指定名称的子元素:
var xml:XML =
<foo>
<bar>text1</bar>
<bar>text2</bar>
</foo>;
trace(xml.child("bar").length()); // 2
trace(xml.child("bar")[0].toXMLString()); // <bar>text1</bar>
trace(xml.child("bar")[1].toXMLString()); // <bar>text2</bar> AS3 function childIndex():int| 运行时版本: | AIR 1.0 Flash Player 9 |
确定该 XML 对象在其父项上下文中从 0 开始编制索引的位置。
返回另请参见
示例 本示例演示如何使用
childIndex() 方法:
var xml:XML =
<foo>
<bar />
text
<bob />
</foo>;
trace(xml.bar.childIndex()); // 0
trace(xml.bob.childIndex()); // 2 AS3 function children():XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
按 XML 对象的显示顺序列出其子项。一个 XML 子项就是一个 XML 元素、文本节点、注释或处理指令。
返回另请参见
示例 本示例演示如何使用
children() 方法:
XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;
var xml:XML =
<foo id="22">
<bar>44</bar>
text
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml.children().length()); // 4
trace(xml.children()[0].toXMLString()); // <bar>44</bar>
trace(xml.children()[1].toXMLString()); // text
trace(xml.children()[2].toXMLString()); // <!-- comment -->
trace(xml.children()[3].toXMLString()); // <?instruction ?> AS3 function comments():XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
列出包含 XML 注释的 XML 对象的属性。
返回另请参见
示例 本示例演示如何使用
comments() 方法:
XML.ignoreComments = false;
var xml:XML =
<foo>
<!-- example -->
<!-- example2 -->
</foo>;
trace(xml.comments().length()); // 2
trace(xml.comments()[1].toXMLString()); // <!-- example2 --> AS3 function contains(value:XML):Boolean| 运行时版本: | AIR 1.0 Flash Player 9 |
对比该 XML 对象与给定 value 参数。
参数
| value:XML — 要与当前 XML 对象进行对比的值。
|
返回 | Boolean — 如果 XML 对象与 value 参数匹配,则为 true;否则为 false。
|
另请参见
示例 本示例演示如何使用
contains() 方法:
var xml:XML =
<order>
<item>Rice</item>
<item>Kung Pao Shrimp</item>
</order>;
trace(xml.item[0].contains(<item>Rice</item>)); // true
trace(xml.item[1].contains(<item>Kung Pao Shrimp</item>)); // true
trace(xml.item[1].contains(<item>MSG</item>)); // false AS3 function copy():XML| 运行时版本: | AIR 1.0 Flash Player 9 |
返回给定 XML 对象的副本。该副本为整个节点树的副本。复制的 XML 对象没有父级,如果尝试调用 parent() 方法,将返回 null。
返回另请参见
示例 本示例演示
copy() 方法如何创建 XML 对象的新实例。修改副本时,原始对象保持不变:
var xml1:XML = <foo />;
var xml2:XML = xml1.copy();
xml2.appendChild(<bar />);
trace(xml1.bar.length()); // 0
trace(xml2.bar.length()); // 1
AS3 static function defaultSettings():Object| 运行时版本: | AIR 1.0 Flash Player 9 |
返回一个下列属性设置为默认值的对象:ignoreComments、ignoreProcessingInstructions、ignoreWhitespace、prettyIndent 和 prettyPrinting。其默认值如下:
ignoreComments = true
ignoreProcessingInstructions = true
ignoreWhitespace = true
prettyIndent = 2
prettyPrinting = true
注意:不要将此方法应用于 XML 类的实例;应将其应用于 XML,如以下代码所示:var df:Object = XML.defaultSettings()。
返回另请参见
示例 下面的示例演示如何在设置 XML 对象之前应用某些自定义设置(以便包含注释和处理指令),如何在设置另一个 XML 对象之前恢复为默认设置,以及如何再次设置自定义设置(以便设置更多 XML 对象):
XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;
var customSettings:Object = XML.settings();
var xml1:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml1.toXMLString());
// <foo>
// <!-- comment -->
// <?instruction ?>
// </foo>
XML.setSettings(XML.defaultSettings());
var xml2:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml2.toXMLString());
AS3 function descendants(name:Object = *):XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
返回包含给定 name 参数的 XML 对象的所有后代(子级、孙级、曾孙级等)。name 参数是可选项。name 参数可以为 QName 对象、String 数据类型或随后转换为 String 数据类型的任何其它数据类型。
若要返回所有后代,请使用“*”参数。如果未传递任何参数,则传递字符串“*”,并返回此 XML 对象的所有后代。
参数
| name:Object (default = *) — 要匹配的元素的名称。
|
返回 | XMLList — 匹配后代的 XMLList 对象。如果没有后代,则返回空的 XMLList 对象。
|
另请参见
示例 若要返回名称与 ActionScript 保留字相匹配的后代,请使用
descendants() 方法,而不要使用后代运算符 (..), 运算符,如下面的示例所示:
var xml:XML =
<enrollees>
<student id="239">
<class name="Algebra" />
<class name="Spanish 2"/>
</student>
<student id="206">
<class name="Trigonometry" />
<class name="Spanish 2" />
</student>
</enrollees>
trace(xml.descendants("class")); 下面的示例演示
descendants() 方法如何返回包含
所有后代对象(包括子级、孙级等)的 XMLList 对象:
XML.ignoreComments = false;
var xml:XML =
<body>
<!-- comment -->
text1
<a>
<b>text2</b>
</a>
</body>;
trace(xml.descendants("*").length()); // 5
trace(xml.descendants("*")[0]); // // <!-- comment -->
trace(xml.descendants("*")[1].toXMLString()); // text1
trace(xml.descendants("a").toXMLString()); // <a><b>text2</b></a>
trace(xml.descendants("b").toXMLString()); // <b>text2</b> AS3 function elements(name:Object = *):XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
列出某 XML 对象的元素。一个由开始和结束标签组成的元素;例如 <first></first>。name 参数是可选项。name 参数可以为 QName 对象、String 数据类型或随后转换为 String 数据类型的任何其它数据类型。使用 name 参数可列出特定元素。例如,以下示例中的元素“first”返回“John”:<first>John</first>。
若要列出所有元素,请使用星号 (*) 作为参数。该星号也是默认参数。
使用带星号参数的 length() 方法可输出元素的总数。例如,numElement = addressbook.elements("*").length()。
参数
| name:Object (default = *) — 元素的名称。元素的名称由尖括号括起。例如,以下示例中的“first”为 name:<first></first>。
|
返回 | XMLList — 元素内容的 XMLList 对象。元素内容位于起始和结束标签之间。如果使用星号 (*) 调用所有元素,将返回元素的标签和内容。
|
另请参见
示例 下例说明
elements() 方法只返回元素列表,而不返回注释、文本属性或处理指令:
var xml:XML =
<foo>
<!-- comment -->
<?instruction ?>
text
<a>1</a>
<b>2</b>
</foo>;
trace(xml.elements("*").length()); // 2
trace(xml.elements("*")[0].toXMLString()); // <a>1</a>
trace(xml.elements("b").length()); // 1
trace(xml.elements("b")[0].toXMLString()); // <b>2</b> 若要返回名称与 ActionScript 保留字相匹配的元素,请使用
elements() 方法替代 XML 点 (.) 运算符,如下面的示例所示:
var xml:XML =
<student id="206">
<class name="Trigonometry" />
<class name="Spanish 2" />
</student>
trace(xml.elements("class"));
AS3 function hasComplexContent():Boolean| 运行时版本: | AIR 1.0 Flash Player 9 |
检查该 XML 对象是否包含复杂内容。如果 XML 对象具有子元素,则表明它包含复杂内容。表示属性、注释、处理指令和文本节点的 XML 对象不包含复杂内容。但是,仍可将包含上述内容的对象视为包含复杂内容(条件是该对象具有子元素)。
返回 | Boolean — 如果 XML 对象包含复杂内容,则为 true,否则为 false。
|
另请参见
示例 下面的示例演示一个 XML 对象,该对象有一个包含简单内容的名为
a 的属性,以及一个包含复杂内容的名为
a 的属性:
var xml:XML =
<foo>
<a>
text
</a>
<a>
<b/>
</a>
</foo>;
trace(xml.a[0].hasComplexContent()); // false
trace(xml.a[1].hasComplexContent()); // true
trace(xml.a[0].hasSimpleContent()); // true
trace(xml.a[1].hasSimpleContent()); // false AS3 function hasOwnProperty(p:String):Boolean| 运行时版本: | AIR 1.0 Flash Player 9 |
检查该对象是否具有 p 参数所指定的属性。
参数
返回 | Boolean — 如果此属性存在,则为 true;否则为 false。
|
另请参见
示例 下例使用
hasOwnProperty() 方法,以确保属性 (
b) 在计算使用该属性的表达式 (
b == "11") 之前便已存在:
var xml:XML =
<foo>
<a />
<a>
<b>10</b>
</a>
<a>
<b>11</b>
</a>
</foo>;
trace(xml.a.(hasOwnProperty("b") && b == "11")); 如果本示例的最后一行内容如下所示,则 Flash Player 将引发异常,因为第一个元素(名为
a)不具有名为
b 的属性:
trace(xml.a.(b == "11"));
下例使用
hasOwnProperty() 方法,以确保属性 (
item) 在计算使用该属性的表达式 (
item.contains("toothbrush")) 之前便已存在:
var xml:XML =
<orders>
<order id='1'>
<item>toothbrush</item>
<item>toothpaste</item>
</order>
<order>
<returnItem>shoe polish</returnItem>
</order>
</orders>;
trace(xml.order.(hasOwnProperty("item") && item.contains("toothbrush"))); AS3 function hasSimpleContent():Boolean| 运行时版本: | AIR 1.0 Flash Player 9 |
检查该 XML 对象是否包含简单内容。如果 XML 对象表示文本节点、属性节点或不包含子元素的 XML 元素,则表明它包含简单内容。表示注释和处理指令的 XML 对象不包含简单内容。
返回 | Boolean — 如果 XML 对象包含简单内容,则为 true,否则为 false。
|
另请参见
示例 下面的示例演示一个 XML 对象,该对象有一个包含简单内容的名为
a 的属性,以及一个包含复杂内容的名为
a 的属性:
var xml:XML =
<foo>
<a>
text
</a>
<a>
<b/>
</a>
</foo>;
trace(xml.a[0].hasComplexContent()); // false
trace(xml.a[1].hasComplexContent()); // true
trace(xml.a[0].hasSimpleContent()); // true
trace(xml.a[1].hasSimpleContent()); // false AS3 function inScopeNamespaces():Array| 运行时版本: | AIR 1.0 Flash Player 9 |
根据该 XML 对象的父项列出其命名空间。
返回另请参见
AS3 function insertChildAfter(child1:Object, child2:Object):*| 运行时版本: | AIR 1.0 Flash Player 9 |
在该 XML 对象的 child1 参数后插入给定的 child2 参数并返回生成的对象。如果 child1 参数为 null,则该方法将在 XML 对象的所有子项之前 插入 child2 的内容(也就是说,不 在任何子项之后)。如果提供 child1,但 XML 对象中不包含该参数,则不修改该 XML 对象并返回 undefined。
如果对不是元素(文本、属性、注释、pi 等等)的 XML 子项调用该方法,则返回 undefined。
使用 delete (XML) 运算符删除 XML 节点。
参数
| child1:Object — 在 child2 之前插入的源对象中的对象。
|
| |
| child2:Object — 要插入的对象。
|
返回 | * — 生成的 XML 对象或 undefined。
|
另请参见
示例 下面的示例将一个元素追加到 XML 对象的子元素的末尾:
var xml:XML =
<menu>
<item>burger</item>
<item>soda</item>
</menu>;
xml.insertChildAfter(xml.item[0], <saleItem>fries</saleItem>);
trace(xml); trace() 输出如下所示:
<menu>
<item>burger</item>
<saleItem>fries</saleItem>
<item>soda</item>
</menu>
AS3 function insertChildBefore(child1:Object, child2:Object):*| 运行时版本: | AIR 1.0 Flash Player 9 |
在该 XML 对象的 child1 参数前插入给定的 child2 参数并返回生成的对象。如果 child1 参数为 null,则该方法将在 XML 对象的所有子项之后 插入 child2 的内容(也就是说,不 在任何子项之前)。如果提供 child1,但 XML 对象中不包含该参数,则不修改该 XML 对象并返回 undefined。
如果对不是元素(文本、属性、注释、pi 等等)的 XML 子项调用该方法,则返回 undefined。
使用 delete (XML) 运算符删除 XML 节点。
参数
| child1:Object — 在 child2 之后插入的源对象中的对象。
|
| |
| child2:Object — 要插入的对象。
|
返回 | * — 生成的 XML 对象或 undefined。
|
另请参见
示例 下面的示例将一个元素追加到 XML 对象的子元素的末尾:
var xml:XML =
<menu>
<item>burger</item>
<item>soda</item>
</menu>;
xml.insertChildBefore(xml.bar[0], <saleItem>fries</saleItem>);
trace(xml); trace() 输出如下所示:
<menu>
<saleItem>fries</saleItem>
<item>burger</item>
<item>soda</item>
</menu>
AS3 function length():int| 运行时版本: | AIR 1.0 Flash Player 9 |
对于 XML 对象,该方法始终返回整数 1。XMLList 类的 length() 方法对仅包含一个值的 XMLList 对象返回值 1。
返回 | int — 对于任何 XML 对象,始终返回 1。
|
另请参见
AS3 function localName():Object| 运行时版本: | AIR 1.0 Flash Player 9 |
提供该 XML 对象限定名称的本地名称部分。
返回 | Object — 作为 String 或 null 的本地名称。
|
另请参见
示例 下面的示例演示如何使用
localName() 方法:
var xml:XML =
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:wx = "http://example.com/weather">
<wx:forecast>
<wx:city>Quito</wx:city>
</wx:forecast>
</soap:Body>
</soap:Envelope>;
trace(xml.localName()); // Envelope AS3 function name():Object| 运行时版本: | AIR 1.0 Flash Player 9 |
提供该 XML 对象的限定名称。
返回另请参见
示例 下面的示例演示如何使用
name() 方法获取 XML 对象的限定名称:
var xml:XML =
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:wx = "http://example.com/weather">
<wx:forecast>
<wx:city>Quito</wx:city>
</wx:forecast>
</soap:Body>
</soap:Envelope>;
trace(xml.name().localName); // Envelope
trace(xml.name().uri); // "http://www.w3.org/2001/12/soap-envelope" 下面的示例演示如何对 XML 属性 (property)、文本元素和属性 (attribute) 调用
name() 方法:
var xml:XML =
<foo x="15" y="22">
text
</foo>;
trace(xml.name().localName); // foo
trace(xml.name().uri == ""); // true
trace(xml.children()[0]); // text
trace(xml.children()[0].name()); // null
trace(xml.attributes()[0]); // 15
trace(xml.attributes()[0].name()); // x AS3 function namespace(prefix:String = null):*| 运行时版本: | AIR 1.0 Flash Player 9 |
如果没有提供参数,则提供与该 XML 对象的限定名关联的命名空间。如果指定了 prefix 参数,则该方法将返回与 prefix 参数匹配且位于 XML 对象所在范围内的命名空间。如果不存在此类命名空间,该方法将返回 undefined。
参数
| prefix:String (default = null) — 要匹配的前缀。
|
返回 | * — 返回 null、undefined 或命名空间。
|
另请参见
示例 下例使用
namespace() 方法获取 XML 对象的命名空间,并将其分配给名为
soap 的 Namespace 对象,随后将使用该对象标识
xml 对象 (
xml.soap::Body[0]):
var xml:XML =
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:wx = "http://example.com/weather">
<wx:forecast>
<wx:city>Quito</wx:city>
</wx:forecast>
</soap:Body>
</soap:Envelope>;
var soap:Namespace = xml.namespace();
trace(soap.prefix); // soap
trace(soap.uri); // http://www.w3.org/2001/12/soap-envelope
var body:XML = xml.soap::Body[0];
trace(body.namespace().prefix); // soap
trace(xml.namespace().uri); // http://www.w3.org/2001/12/soap-envelope
trace(body.namespace("wx").uri); // "http://example.com/weather" 下例使用
namespace() 方法获取节点的默认命名空间,以及特定前缀 (
"dc") 的命名空间:
var xml:XML =
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://purl.org/rss/1.0/">
<!-- ... -->
</rdf:RDF>;
trace(xml.namespace()); // http://www.w3.org/1999/02/22-rdf-syntax-ns#
trace(xml.namespace("dc")); // http://purl.org/dc/elements/1.1/
trace(xml.namespace("foo")); // undefined AS3 function namespaceDeclarations():Array| 运行时版本: | AIR 1.0 Flash Player 9 |
在该 XML 对象的父项中列出与其关联的命名空间声明。
返回另请参见
示例 下面的示例输出 XML 对象的命名空间声明:
var xml:XML =
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://purl.org/rss/1.0/">
<!-- ... -->
</rdf:RDF>;
for (var i:uint = 0; i < xml.namespaceDeclarations().length; i++) {
var ns:Namespace = xml.namespaceDeclarations()[i];
var prefix:String = ns.prefix;
if (prefix == "") {
prefix = "(default)";
}
trace(prefix + ":" , ns.uri);
} trace() 输出如下所示:
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
dc: http://purl.org/dc/elements/1.1/
(default): http://purl.org/rss/1.0/
AS3 function nodeKind():String| 运行时版本: | AIR 1.0 Flash Player 9 |
指定节点的类型:文本、注释、处理指令、属性或元素。
返回另请参见
示例 下面的示例跟踪所有这五种节点类型:
XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;
var xml:XML =
<example id="10">
<!-- this is a comment -->
<?test this is a pi ?>
and some text
</example>;
trace(xml.nodeKind()); // element
trace(xml.children()[0].nodeKind()); // comment
trace(xml.children()[1].nodeKind()); // processing-instruction
trace(xml.children()[2].nodeKind()); // text
trace(xml.@id[0].nodeKind()); // attribute AS3 function normalize():XML| 运行时版本: | AIR 1.0 Flash Player 9 |
对于该 XML 对象以及所有子级 XML 对象,合并相邻文本节点并删除空文本节点。
返回另请参见
示例 下面的示例演示调用
normalize() 方法的效果:
var xml:XML = <body></body>;
xml.appendChild("hello");
xml.appendChild(" world");
trace(xml.children().length()); // 2
xml.normalize();
trace(xml.children().length()); // 1 AS3 function parent():*| 运行时版本: | AIR 1.0 Flash Player 9 |
返回 XML 对象的父项。如果该 XML 对象没有父项,则该方法返回 undefined。
返回 | * — 父 XML 对象。返回 String 或 null。
|
另请参见
示例 下例使用
parent() 方法标识 XML 结构中特定元素的父项:
var xml:XML =
<body>
<p id="p1">Hello</p>
<p id="p2">Test:
<ul>
<li>1</li>
<li>2</li>
</ul>
</p>
</body>;
var node:XML = xml.p.ul.(li.contains("1"))[0]; // == <ul> ... </ul>
trace(node.parent().@id); // p2 AS3 function prependChild(value:Object):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
将提供的 child 对象的副本插入 XML 元素中,并放在该元素的任何现有 XML 属性前面。
使用 delete (XML) 运算符删除 XML 节点。
参数
返回另请参见
示例 下面的示例使用
prependChild() 方法将元素添加到 XML 对象子级列表的开头:
var xml:XML =
<body>
<p>hello</p>
</body>;
xml.prependChild(<p>world</p>);
trace(xml.p[0].toXMLString()); // <p>world</p>
trace(xml.p[1].toXMLString()); // <p>hello</p> AS3 function processingInstructions(name:String = "*"):XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
如果提供 name 参数,则列出包含该 name 的处理指令的 XML 对象的所有子项。如果未提供参数,则该方法会列出包含任何处理指令的 XML 对象的所有子项。
参数
| name:String (default = "*") — 要匹配的处理指令的名称。
|
返回另请参见
示例 下面的示例使用
processingInstructions() 方法获取 XML 对象的处理指令数组:
XML.ignoreProcessingInstructions = false;
var xml:XML =
<body>
foo
<?xml-stylesheet href="headlines.css" type="text/css" ?>
<?instructionX ?>
</body>;
trace(xml.processingInstructions().length()); // 2
trace(xml.processingInstructions()[0].name()); // xml-stylesheet AS3 function propertyIsEnumerable(p:String):Boolean| 运行时版本: | AIR 1.0 Flash Player 9 |
检查属性 p 所在的属性集是否可在应用于 XMLList 对象的 for..in 语句中遍历。仅当 toString(p) == "0" 时返回 true。
参数
返回 | Boolean — 如果该属性可以在 for..in 语句中,为 true;否则为 false。
|
另请参见
示例 下例演示,对于 XML 对象,
propertyNameIsEnumerable() 方法返回值
true(仅对于值
0),而对于 XMLList 对象,返回值为
true(对于 XMLList 对象的每个有效索引值):
var xml:XML =
<body>
<p>Hello</p>
<p>World</p>
</body>;
trace(xml.propertyIsEnumerable(0)); // true
trace(xml.propertyIsEnumerable(1)); // false
for (var propertyName:String in xml) {
trace(xml[propertyName]);
}
var list:XMLList = xml.p;
trace(list.propertyIsEnumerable(0)); // true
trace(list.propertyIsEnumerable(1)); // true
trace(list.propertyIsEnumerable(2)); // false
for (var propertyName:String in list) {
trace(list[propertyName]);
} AS3 function removeNamespace(ns:Namespace):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
删除该对象及其所有子级的给定命名空间。 如果命名空间由该对象的限定名称或该对象属性的限定名称引用,则 removeNamespaces() 方法不会删除该命名空间。
参数
返回另请参见
示例 下面的示例演示如何删除 XML 对象的命名空间声明:
var xml:XML =
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://purl.org/rss/1.0/">
<!-- ... -->
</rdf:RDF>;
trace(xml.namespaceDeclarations().length); // 3
trace(xml.namespaceDeclarations()[0] is String); //
var dc:Namespace = xml.namespace("dc");
xml.removeNamespace(dc);
trace(xml.namespaceDeclarations().length); // 2 AS3 function replace(propertyName:Object, value:XML):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
用给定的 value 参数替换 propertyName 参数所指定的属性。如果没有属性与 propertyName 匹配,会将 XML 对象保持为未修改状态。
参数
| propertyName:Object — 可以是数值、XML 元素集的非限定名称、XML 元素集的限定名称或星号通配符 (*)。使用非限定名称标识默认命名空间中的 XML 元素。
|
| |
| value:XML — 替换值。它可以是 XML 对象、XMLList 对象或可以使用 toString() 转换的任何值。
|
返回 | XML — 生成的 XML 对象,其中替换了匹配属性。
|
另请参见
示例 下面的示例演示在调用
replace() 方法时将整数作为第一个参数:
var xml:XML =
<body>
<p>Hello</p>
<p>World</p>
<hr/>
</body>;
xml.replace(1, <p>Bob</p>);
trace(xml); 这将产生以下
trace() 输出:
<body>
<p>Hello</p>
<p>Bob</p>
<hr/>
</body>
下面的示例调用
replace() 方法时将字符串作为第一个参数:
var xml:XML =
<body>
<p>Hello</p>
<p>World</p>
<hr/>
</body>;
xml.replace("p", <p>Hi</p>);
trace(xml); 这将产生以下
trace() 输出:
<body>
<p>Hi</p>
<hr/>
</body>;
下面的示例演示在调用
replace() 方法时将 QName 作为第一个参数:
var xml:XML =
<ns:body xmlns:ns = "myNS">
<ns:p>Hello</ns:p>
<ns:p>World</ns:p>
<hr/>
</ns:body>;
var qname:QName = new QName("myNS", "p");
xml.replace(qname, <p>Bob</p>);
trace(xml);
这将产生以下
trace() 输出:
<ns:body xmlns:ns = "myNS">
<p>Bob</p>
<hr/>
</ns:body>
下面的示例演示在调用
replace() 方法时将字符串
"*" 作为第一个参数:
var xml:XML =
<body>
<p>Hello</p>
<p>World</p>
<hr/>
</body>;
xml.replace("*", <img src = "hello.jpg"/>);
trace(xml); 这将产生以下
trace() 输出:
<body>
<img src="hello.jpg"/>
</body>
AS3 function setChildren(value:Object):XML| 运行时版本: | AIR 1.0 Flash Player 9 |
用 value 参数中提供的指定 XML 属性集替换该 XML 对象的子属性。
参数
| value:Object — 替换 XML 属性。可以是单个 XML 对象或 XMLList 对象。
|
返回另请参见
示例 下面的示例演示在调用
setChildren() 方法时,先使用 XML 对象作为参数,然后使用 XMLList 对象作为参数:
var xml:XML =
<body>
<p>Hello</p>
<p>World</p>
</body>;
var list:XMLList = xml.p;
xml.setChildren(<p>hello</p>);
trace(xml);
// <body>
// <p>hello</p>
// </body>
xml.setChildren(list);
trace(xml);
// <body>
// <p>Hello</p>
// <p>World</p>
// </body> AS3 function setLocalName(name:String):void| 运行时版本: | AIR 1.0 Flash Player 9 |
将该 XML 对象的本地名称更改为给定的 name 参数。
参数
另请参见
示例 下面的示例使用
setLocalName() 方法更改 XML 元素的本地名称:
var xml:XML =
<ns:item xmlns:ns="http://example.com">
toothbrush
</ns:item>;
xml.setLocalName("orderItem");
trace(xml.toXMLString()); // <ns:orderItem xmlns:ns="http://example.com">toothbrush</ns:orderItem> AS3 function setName(name:String):void| 运行时版本: | AIR 1.0 Flash Player 9 |
将该 XML 对象的名称设置为给定限定名称或属性名。
参数
另请参见
示例 下面的示例使用
setName() 方法更改 XML 元素的名称:
var xml:XML =
<item>
toothbrush
</item>;
xml.setName("orderItem");
trace(xml.toXMLString()); // <orderItem>toothbrush</orderItem> AS3 function setNamespace(ns:Namespace):void| 运行时版本: | AIR 1.0 Flash Player 9 |
设置与该 XML 对象关联的命名空间。
参数
另请参见
示例 下例使用在某个 XML 对象中定义的
soap 命名空间,并将其应用于另一个 XML 对象 (
xml2) 的命名空间:
var xml1:XML =
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<!-- ... -->
</soap:Envelope>;
var ns:Namespace = xml1.namespace("soap");
var xml2:XML =
<Envelope>
<Body/>
</Envelope>;
xml2.setNamespace(ns);
trace(xml2); AS3 static function setSettings(... rest):void| 运行时版本: | AIR 1.0 Flash Player 9 |
设置下列 XML 属性的值:ignoreComments、ignoreProcessingInstructions、ignoreWhitespace、prettyIndent 和 prettyPrinting。以下是默认设置,如果未提供 setObj 参数,将应用这些设置:
XML.ignoreComments = true
XML.ignoreProcessingInstructions = true
XML.ignoreWhitespace = true
XML.prettyIndent = 2
XML.prettyPrinting = true
注意:不要将此方法应用于 XML 类的实例;应将其应用于 XML,如以下代码所示:XML.setSettings()。
参数
| ... rest — 具有下列各个属性的对象:
ignoreComments
ignoreProcessingInstructions
ignoreWhitespace
prettyIndent
prettyPrinting
|
另请参见
示例 下面的示例演示如何在设置 XML 对象之前应用某些自定义设置(以便包含注释和处理指令),如何在设置另一个 XML 对象之前恢复为默认设置,以及如何再次设置自定义设置(以便设置更多 XML 对象):
XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;
var customSettings:Object = XML.settings();
var xml1:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml1.toXMLString());
// <foo>
// <!-- comment -->
// <?instruction ?>
// </foo>
XML.setSettings(XML.defaultSettings());
var xml2:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml2.toXMLString());
AS3 static function settings():Object| 运行时版本: | AIR 1.0 Flash Player 9 |
检索下列属性:ignoreComments、ignoreProcessingInstructions、ignoreWhitespace、prettyIndent 和 prettyPrinting。
返回 | Object — 具有下列 XML 属性的对象:
ignoreComments
ignoreProcessingInstructions
ignoreWhitespace
prettyIndent
prettyPrinting
|
另请参见
示例 下面的示例演示如何在设置 XML 对象之前应用某些自定义设置(以便包含注释和处理指令),如何在设置另一个 XML 对象之前恢复为默认设置,以及如何再次设置自定义设置(以便设置更多 XML 对象):
XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;
var customSettings:Object = XML.settings();
var xml1:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml1.toXMLString());
// <foo>
// <!-- comment -->
// <?instruction ?>
// </foo>
XML.setSettings(XML.defaultSettings());
var xml2:XML =
<foo>
<!-- comment -->
<?instruction ?>
</foo>;
trace(xml2.toXMLString());
AS3 function text():XMLList| 运行时版本: | AIR 1.0 Flash Player 9 |
返回 XML 对象用来表示 XML 文本节点的所有 XML 属性的 XMLList 对象。
返回另请参见
示例 下面的示例使用
text() 方法获得 XML 对象的文本节点:
var xml:XML =
<body>
text1
<hr/>
text2
</body>;
trace(xml.text()[0]); // text1
trace(xml.text()[1]); // text2 AS3 function toString():String| 运行时版本: | AIR 1.0 Flash Player 9 |
返回 XML 对象的字符串表示形式。此转换的规则取决于 XML 对象包含的是简单内容还是复杂内容:
- 如果 XML 对象包含简单内容,
toString() 将返回 XML 对象的字符串内容,但从中除去了以下内容:开始标签、属性、命名空间声明和结束标签。
- 如果 XML 对象包含复杂内容,
toString() 将返回 XML 编码字符串,该字符串表示完整的 XML 对象,包括开始标签、属性、命名空间声明和结束标签。
若要每次都返回整个 XML 对象,请使用 toXMLString()。
返回另请参见
示例 下面的示例演示当 XML 对象包含简单内容时
toString() 方法的返回值:
var test:XML = <type name="Joe">example</type>;
trace(test.toString()); //example
下面的示例演示当 XML 对象包含复杂内容时
toString() 方法的返回值:
var test:XML =
<type name="Joe">
<base name="Bob"></base>
example
</type>;
trace(test.toString());
// <type name="Joe">
// <base name="Bob"/>
// example
// </type>
AS3 function toXMLString():String| 运行时版本: | AIR 1.0 Flash Player 9 |
返回 XML 对象的字符串表示形式。与 toString() 方法不同,toXMLString() 方法始终返回 XML 对象的开始标签、属性和结束标签,与 XML 对象包含的是简单内容还是复杂内容无关。(toString() 方法去除包含简单内容的 XML 对象的这些项。)
返回另请参见
示例 下面的示例演示使用
toString() 方法(默认情况下适用于
trace() 方法的所有参数)与使用
toXMLString() 方法之间的区别:
var xml:XML =
<p>hello</p>;
trace(xml); // hello
trace(xml.toXMLString()); // <p>hello</p> AS3 function valueOf():XML| 运行时版本: | AIR 1.0 Flash Player 9 |
返回该 XML 对象。
返回另请参见
示例 下面的示例演示
valueOf() 方法返回的值与源 XML 对象相同:
var xml:XML = <p>hello</p>;
trace(xml.valueOf() === xml); // true
下面的示例先创建一个 XML 变量并向其中添加节点。然后使用 XML 属性查找和输出 XML 节点。请注意,“at”(
@) 符号用在多个
trace() 调用中,以按属性名称查找信息。
package {
import flash.display.Sprite;
public class XmlExample extends Sprite {
public function XmlExample() {
var employees:XML =
<employees>
<employee ssn="123-123-1234">
<name first="John" last="Doe"/>
<address>
<street>11 Main St.</street>
<city>San Francisco</city>
<state>CA</state>
<zip>98765</zip>
</address>
</employee>
<employee ssn="789-789-7890">
<name first="Mary" last="Roe"/>
<address>
<street>99 Broad St.</street>
<city>Newton</city>
<state>MA</state>
<zip>01234</zip>
</address>
</employee>
</employees>;
trace(employees.employee[0].address.zip); // 98765
trace(employees.employee[1].@ssn); // 789-789-7890
trace(employees.employee.name); // <name first="John" last="Doe"/>
// <name first="Mary" last="Roe"/>
trace(employees..zip[0]); // 98765
trace(employees..@ssn[1]); // 789-789-7890
trace(employees..name); // <name first="John" last="Doe"/>
// <name first="Mary" last="Roe"/>
trace(employees.employee[0].address.*); // <street>11 Main St.</street>
// <city>San Francisco</city>
// <state>CA</state>
// <zip>98765</zip>
var node:String = "zip";
trace(employees.employee[0].address[node]); // 98765
var attribute:String = "ssn";
trace(employees.employee[1].@[attribute]); // 789-789-7890
for each (var num:XML in employees..@ssn) {
trace(num); // 123-123-1234
} // 789-789-7890
var ssnToFind:String = "789-789-7890";
trace(employees.employee.(@ssn == ssnToFind).toXMLString());
// <employee ssn="789-789-7890">
// <name first="Mary" last="Roe"/>
// <address>
// <street>99 Broad St.</street>
// <city>Newton</city>
// <state>MA</state>
// <zip>01234</zip>
// </address>
// </employee>
}
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Sun Dec 14 2008, 10:39 PM -08:00