Actionscript XML Search Utillity

A neat little class for searching through an xml object, options include recursive search or just return the first instance. Proper documentation to follow.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
XmlSearch v.1.0
Author:Max Garfinkel
Last Revision: 08/02/2007
 
Finds and returns attributes and node values from an xml object
*/
 
class com.maxgarfinkel.data.XmlSearch
{
    private var returnData:Array;
 
    public function XmlSearch()
    {
    }
 
    public function getAttributes(xml:XML, searchterm:String, attributeName:String, recursive:Boolean):Array
    {
        this.returnData = [];
        this.searchId(xml, searchterm, attributeName, recursive);
        return(returnData);
    }
 
    private function searchId(xml:XML, searchterm:String, attributeName:String, recursive:Boolean):Void
    {
        for(var i:Number = 0; i < xml.childNodes.length; i++)
        {
            if(xml.childNodes[i].nodeName.toString() == searchterm)
                this.returnData.push(xml.childNodes[i].attributes[attributeName]);
            if(recursive == true)
                this.searchId(xml.childNodes[i], searchterm, attributeName, recursive);
        }
    }
 
    //Returns xml node data as elements in a single array array
    public function getNodeContent(xml:XML, searchterm:String, recursive):Array
    {
        this.returnData = [];
        this.searchContent(xml, searchterm, recursive);
        return(returnData);
    }
 
    private function searchContent(xml:XML, searchterm:String, recursive:Boolean):Void
    {
        for(var i:Number = 0; i < xml.childNodes.length; i++)
        {
            if(xml.childNodes[i].nodeName.toString() == searchterm)
                this.returnData.push(xml.childNodes[i].firstChild.nodeValue);
            if(recursive == true)
                this.searchContent(xml.childNodes[i], searchterm, recursive);
        }
    }
}

About this entry