下面的SearchableXML对象能够让你在XML对象中快速的搜索xML对象。
下面是一个xml例子:
<software>
<tools>
<product name="Flash" version="MX 2004"/>
<product name="Dreamweaver" version="MX 2004"/>
</tools>
<servers>
<product name="ColdFusion" version="MX 6.1"/>
<product name="Flex" version="1.0"/>
</servers>
<foo>
<bar>
<baz>Have a good weekend</baz>
</bar>
</foo>
</software>
在你的AS中这样做
import com.macromedia.xml.SearchableXML;
var myXml:SearchableXML = new SearchabelXML();
myXml.parseXML(xmlFileAbove);
// 将返回Flash、Dreamweaver XML元素
var allTools:Array = myXml.findElement("software.tools");
// 将返回ColdFusion、Flex XML元素
var allServers:Array = myXml.findElement("software.servers");
//返回 "Have a good weekend"
var msg:String = myXml.findElement("software.foo.bar.baz")[0].firstChild.nodeValue;
下面是SearchableXML代码
/**
* Adds some search functionality to the XML object.
*
* @author Christian Cantrell
*/
class com.macromedia.xml.SearchableXML
extends XML
{
/**
* Iterates through the XML object, looking for a specific
* element or set of elements.
*
* @path A dot delimited path to the element you're looking for.
*/
public function findElement(path:String):Array
{
var pathNodes:Array = path.split(".");
var currentChild:XML = this;
var elementArray:Array = new Array();
for (var i = 0; i < pathNodes.length; ++i)
{
var children = currentChild.childNodes;
for (var j = 0; j < children.length; ++j)
{
if (children[j].nodeType == 1 && children[j].nodeName == pathNodes
)
{
if (i == (pathNodes.length - 1))
{
elementArray.push(children[j]);
}
else
{
currentChild = children[j];
}
}
}
}
return elementArray;
}
}
转载于:https://www.cnblogs.com/savageworld/archive/2006/08/20/481649.html