对XML内容进行操作时,查找XML节点是很重要的一个操作。在ActionScript 3.0中,提供了两种查找XML节点的方式:通过属性进行查找和通过节点内容进行能够查找。
使用属性进行查找时,可以直接指定查找的内容的表达式。如果节点符合表达式的判断,那么在返回值内加入节点。具体使用方法如下代码所示。
var xml:String="<root>"
+"<Element>"
+"<Element1 version='9'>Flash CS3</Element1>"
+"<Element1 version='8'>Flash 8</Element1>"
+"<Element1 version='7'>Flash 2004MX</Element1>"
+"</Element>"
+"</root>";
var flexXML:XML=new XML(xml);
trace(flexXML.Element.Element1.(attribute('version')>7));
在上面代码中,flexXML.Element.Element1.(attribute('version')>7通过指定查找version属性大于7的节点,并输出。上面代码输出结果如下所示。
<Element1 version='9'>Flash CS3</Element1>
<Element1 version='8'>Flash 8</Element1>
在进行查找时可以使用“==”、“>”、“<”、“>=”和“<=”等操作符进行对属性的判断。XML中,还提供一个hasOwnProperty判断节点中是否存在查找使用属性。查找表达式支持多条件布尔运算。使用方式如下代码所示。
var xml:String="<root>"
+"<Element>"
+"<Element1 version='9'>Flash CS3</Element1>"
+"<Element1 version='8' company='geostar'>Flash 8</Element1>"
+"<Element1 version='7'>Flash 2004MX</Element1>"
+"</Element>"
+"</root>";
var flexXML:XML=new XML(xml);
trace(flexXML.Element.Element1.( hasOwnProperty(“company”)&&@version>7));
//输出的结果为:<Element1 version='8' company='geostar'>Flash 8</Element1>
通过节点内容查找节点的方式与通过属性查找节点的方式完全一致。同样也是使用表达式的方式对节点内容进行判断查找。具体使用方式如下代码所示。
var flexXML:XML=<root>
<Element>
<Element1>
<Version>
9
</Version>
</Element1>
<Element1>
<Version>
8
</Version>
</Element1>
</Element>
</root>
trace(flexXML.Element.Element1.(Version>7));
运行结果为:<Element1>
<Version>9</Version>
</Element1>
<Element1>
<Version>8</Version>
</Element1>
xml直接获取某一特定标签名的所有节点,如下示例:
var flexXML:XML=<root>
<Element>
<Element1>
<Version>
9
</Version>
</Element1>
<Element1>
<Version>
8
</Version>
</Element1>
</Element>
</root>
trace(flexXML..Element1);
trace(flexXML..Version);
运行结果为:
<Element1>
<Version>9</Version>
</Element1>
<Element1>
<Version>8</Version>
</Element1>
<Version>9</Version>
<Version>8</Version>
对xml高级操作部分:
(1) 改变xml的标签名:
var xml:XML=new XML("<标签名></标签名>");
//改变xml标签名
xml.setName("标签名1");
(2)往xml中添加属性
var xml:XML=new XML("<标签名></标签名>");
//添加属性
xml.@["属性名"]="属性值";
(3)设置xml中文本
var xml:XML=new XML("<标签名></标签名>");
xml.setChildren("文本内容");
(4)在xml中添加子节点
var xml:XML=new XML("<标签名></标签名>");
var xml2:XML=new XML("<标签名2></标签名2>");
var xml3:XML=new XML("<标签名3></标签名3>");
//子节点后面追加子节点
xml.appendChild(xml2);
//子节点前面追加添加子节点
//xml.prependChild(xml3);