Posts Tagged ‘e4x’

A better e4x example

Given some XML of the following form:

    <documents>
      <document type="salesInv" url="assets/demoData/inv_acme_20090920.pdf">
        <metaData type="date" value="20/09/09"/>
        <metaData type="coName" value="ACME Industrial"/>
        <metaData type="orderNo" value="1"/>
      </document>
      <document type="correspondence" url="assets/demoData/inv_acme_20090616pdf">
        <metaData type="date" value="16/06/09"/>
        <metaData type="from" value="David Davidson"/>
        <metaData type="to" value="Andrew Andrewson"/>
      </document>
      <document type="salesInv" url="assets/demoData/inv_acme_20090820pdf">
        <metaData type="date" value="20/08/09"/>
        <metaData type="coName" value="ACME Industrial"/>
        <metaData type="orderNo" value="2"/>
      </document>
      <document type="salesInv" url="assets/demoData/inv_acme_20090820pdf">
        <metaData type="date" value="20/08/09"/>
        <metaData type="coName" value="Botheringtons"/>
        <metaData type="orderNo" value="3"/>
      </document>
    </documents>

… and using a ‘SearchCriterionVO’ of the following form:

public class SearchCriterionVO
{
   public var fieldId:String;
   public var value:String;
}

… a series of search criteria can be used to filter the XML via:

   var filteredDocs:XMLList = documents;
   for each (var criterion:SearchCriterionVO in searchDetails.criteria) {
      if (criterion.value.length > 0) {
         filteredDocs = filteredDocs.(child('metaData').(@type==criterion.fieldId && @value==criterion.value).length() > 0);
      }
   }
Search
Categories