运行时版本: | 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