XPath i ActionScript - Meget nemmere XML!

Alle som har prøvet at arbejde bare lidt med XML i ActionScript via XML klassen ved hvor bøvlet det er, et til tider sandt mareridt, særligt hvis den XML man loader er bare en anelse kompliceret.

Men, rent faktisk, så findes der en udokumenteret XPathAPI i Flash, der giver adgang til at bruge XPath, som er en standardiseret måde at “søge” i et XML dokument, og den gør livet meget, meget lettere!

Selvom der nu efterhånden er kommet dokumentation på den, det ligger bare ikke standard i Flash, så har jeg lige lavet et lille eksempel.

Først en test_xml.xml som vi kan loade:

<?xml version="1.0" encoding="UTF-8"?>
<firma>
	<afdeling>
		<medarbejder>
			<navn>Hans Hansen</navn>
			<titel>Receptionist</titel>
		</medarbejder>
		<medarbejder>
			<navn>Sofie Sofiesen</navn>
			<titel>Sekretær</titel>
		</medarbejder>
		<medarbejder>
			<navn>Poul Poulsen</navn>
			<titel>Revisor</titel>
		</medarbejder>
	</afdeling>
</firma>

Dernæst noget ActionScript:

import mx.xpath.XPathAPI;
var rssfeed_xml:XML = new XML();
rssfeed_xml.ignoreWhite = true;
rssfeed_xml.onLoad = function(success:Boolean) {
  if (success) {
    var namePath:String = "/firma/afdeling/medarbejder/navn";
    var name_array:Array = XPathAPI.selectNodeList(this.firstChild, namePath);

    for(var i=0; i<name_array.length; i++) {
      trace(name_array[i].firstChild.nodeValue);
    }
  } else {
    trace("error loading XML");
  }
};
rssfeed_xml.load("test_xml.xml");

Koden er meget simpel og burde være rimeligt selvforklarende, så går ikke i detaljer med hvad der gør hvad, men grundlæggende loader den et xml dokument, lave en søgning efter medarbejdernes navne via XPath og udskriver dem.

Super simpelt og super overskueligt :-)

Dokumentation af XPathAPI klassen:
XPathAPI.pdf

Rod Gonda’s indlæg om den:
XPath for ActionScript

Hvis du vil vide mere om XML og Flash, så har Flashforum.dk lavet et par udemærkede videotutorials om den “almindelige” måde at arbejde med XML på:
Tutorials - FlashForum.dk



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

Skriv en kommentar