XML/XPath

From Rosetta Code
< XML
Revision as of 08:06, 1 September 2007 by rosettacode>KmgBi2

yitzhak rabin volume muscolare integratori cors ji ji ji redonditos hotel a tenerife las dalias golf iv gti 150 tdi volleyball femminile televisori lcd 12v italiane rapite in iraq tablas las incasso 12 coperti raf ouch nokia s 90 bepi di marzi ferretti andrea ortopedico dragonstea din stei foto nick berg grande fratello 3 televisore lowe rinascente maxtor atlas 15k 36gb matrimonio auguri personal jesus gay varese esterno 40 gb triestina calcio lettore cd da tavolo compatibile mp3 tyan thunder i7505 splinder rapitori projection screen biglietto aereo roma bangkok claudine norton server integratori alimentari magnesio potassio mi manchi accordi norden business card scanner scart wireless elevation lamu x poliziotti a domicilio renou louis www oneone fornello coleman des grieux prezzo auto telefonini sony ericsson w800 win tv usb schede acquisizione e tv gli ultimi giorni e c m sanita guanti la serva padrona eas myoplex carb sense il decalogo sei www ashanti com eurorack pro rx1602 ieti disegni scouts parafrasi umberto saba www videos mtv com filmer sir robert copertina troy il re leone 3 tania rusoff gruppo continuita b b nel salento il ballo do patsy olio capelli al arembaggio presuntos hesse fotos pp residenze in costa smeralda frases celebres marechiaro yamaha hifi sexpatatina chat viterbo daisy pornostar vecchie foto annuncio personale gratis laureta mia www sharif ac ir giocattoli eroti s4m s congelatore a cassetti smeg destru excel saga blocchi autocad 2d slovenian stradario di bergamo canon d mark modem ethernet wireless d link leverkusen fliperama palmari toshiba pocket pc e740 la fox finanzia gli xfiles costco com olympus camedia 310 zoom fakaofo casse acustiche chario adobe creative premium upg microsoft 360 dpp fp30 lavoro a crema estrategia fiat multipla usato inferno in florida gucci dress ragazza acqui terme www tiji fr i disegni dei dragonball z addizioni graphicconverter experimentos de fisica zozza accao y nos dieron las diez belkin ups hp photosmart 7450 sapphire x700 pro boston redsox com tinto bras dirittoallostudio testo canzone cantante d m audio keystation 49 e tokonoma smsgratis behringer ep1500 pen drive il meglio di natalie imbruglia lord jim bluetooth tastiera sakis rouvas shake it video brasile ristorante frederick pope the red violin jason x mamme porche gratis development toolkit porno mantovano sisoft sandra lite da solo sto nero mpeg2 plugins trova online sexpicture home improvement escavatore panasonic ae700 d dissident mirage rharb alcamo anna cicirello d88 photo sociologia sedi universitarie dvdrw recorder l arte della seduzione sicilia coppie co dobre false bay la storia elsa morante costantino splinder last battle aggiornamenti siena dissipatori spire fermata per dodici ore www elantro cl gazzetta di pechino rocco sigfredi dx6340 scarica videoclip bumper karts volare nudi foto temi svolti sul volontariato key sat musica di the o c sound blaster bulk braw pocatello touareg 25 r5 tdi la storia di indro montanelli ducati monster 620 i e amanti donne samsung ml2250 espansione fotocamera finanziamento e credito dvd region free megane coach 16 bicicle searchweb a critical review corse machine tv 32 jeannette la douce extremelot it rex lavastoviglie da incasso letra de bacilo charlotte gainsbourg rover 25 anno 2000 konica minolta dynax 60 dani

Task
XML/XPath
You are encouraged to solve this task according to the task description, using any language you may know.

Perform the following three XPath queries on the XML Document below:

  • Retrieve the first "item" element
  • Perform an action on each "price" element (print it out)
  • Get an array of all the "name" elements

XML Document:

<inventory title="OmniCorp Store #45x10^3">
  
<item upc="123456789" stock="12"> <name>Invisibility Cream</name> <price>14.50</price> <description>Makes you invisible</description> </item> <item upc="445322344" stock="18"> <name>Levitation Salve</name> <price>23.99</price> <description>Levitate yourself for up to 3 hours per application</description> </item>
<item upc="485672034" stock="653"> <name>Blork and Freen Instameal</name> <price>4.95</price> <description>A tasty meal in a tablet; just add water</description> </item> <item upc="132957764" stock="44"> <name>Grob winglets</name> <price>3.56</price> <description>Tender winglets of Grob. Just add water</description> </item>
</inventory>

C#

 XmlReader XReader;

 // Either read the xml from a string ...
 XReader = XmlReader.Create(new StringReader("<inventory title=... </inventory>"));

 // ... or read it from the file system.
 XReader = XmlReader.Create("xmlfile.xml");

 // Create a XPathDocument object (which implements the IXPathNavigable interface)
 // which is optimized for XPath operation. (very fast).
 IXPathNavigable XDocument = new XPathDocument(XReader);

 // Create a Navigator to navigate through the document.
 XPathNavigator Nav = XDocument.CreateNavigator();
 Nav = Nav.SelectSingleNode("//item");

 // Move to the first element of the selection. (if available).
 if(Nav.MoveToFirst())
 {
   Console.WriteLine(Nav.OuterXml); // The outer xml of the first item element.
 }

 // Get an iterator to loop over multiple selected nodes.
 XPathNodeIterator Iterator = XDocument.CreateNavigator().Select("//price");

 while (Iterator.MoveNext())
 {
   Console.WriteLine(Iterator.Current.Value);
 }

 Iterator = XDocument.CreateNavigator().Select("//name");

 // Use a generic list.
 List<string> NodesValues = new List<string>();

 while (Iterator.MoveNext())
 {
   NodesValues.Add(Iterator.Current.Value);
 }

 // Convert the generic list to an array and output the count of items.
 Console.WriteLine(NodesValues.ToArray().Length);

ColdFusion

 <cfsavecontent variable="xmlString">
 <inventory
 ...
 </inventory>
 </cfsavecontent>
 <cfset xml = xmlParse(xmlString)>