Deprecated: Assigning the return value of new by reference is deprecated in /var/www/omflash.dk/public_html/wp-includes/cache.php on line 33

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/omflash.dk/public_html/wp-content/plugins/sem-subscribe-me2/sem-subscribe-me.php on line 511

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_query_vars() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_where() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_join() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_tag_templates() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1329
XPath i ActionScript - Meget nemmere XML! - omFlash();
Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_add_ajax_javascript() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1329

XPath i ActionScript - Meget nemmere XML!


Deprecated: preg_replace() [function.preg-replace]: The /e modifier is deprecated, use preg_replace_callback instead in /var/www/omflash.dk/public_html/wp-includes/functions-formatting.php on line 83

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_the_content_filter() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 638

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 638

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 639

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 639

Strict Standards: Non-static method UltimateTagWarriorActions::replaceTagWithLink() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 643

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