XML/XPath

From Rosetta Code

free punk ringtones qwest ringtones cheap vicodin free qwest ringtones free kyocera ringtones cyclobenzaprine online free jazz ringtones order clomid cheap xanax free tracfone ringtones online flexeril midi ringtones cheap ultram sony ericsson ringtones wwe ringtones free real ringtones nokia ringtones free punk ringtones free funny ringtones free cool ringtones funny ringtones cheap didrex paxil online online lorazepam mtv ringtones alprazolam online cheap pharmacy online sony ringtones free ringtones cheap vigrx free polyphonic ringtones mp3 ringtones free polyphonic ringtones free polyphonic ringtones tramadol online adipex online cheap ultracet viagra online buy diazepam zoloft online vigrx lisinopril online pharmacy online online cheap celexa free sprint ringtones cheap clonazepam levitra sildenafil cheap vicodin xanax online cheap valium cheap pharmacy online sildenafil online wellbutrin online cheap adipex order vicodin free wwe ringtones alltel ringtones free verizon ringtones midi ringtones prozac online cheap lipitor sony ericsson ringtones free sony ringtones albuterol online viagra online cheap carisoprodol sony ericsson ringtones cheap propecia nexium cheap lorazepam flexeril online tracfone ringtones cheap clomid cheap paxil motorola ringtones cheap zyban free qwest ringtones free nextel ringtones cheap clonazepam music ringtones tramadol online soma online cyclobenzaprine online order tramadol buy ativan adipex online nexium online clonazepam online cheap hgh tenuate online online zoloft midi ringtones order alprazolam ambien online free sony ericsson ringtones lisinopril online midi ringtones cheap carisoprodol free nokia ringtones free funny ringtones cheap didrex hgh online didrex online sony ringtones cheap ultram hgh online free ericsson ringtones fioricet cialis flexeril online cheap carisoprodol free real ringtones cheap hoodia but ambien cheap lipitor free online pharmacy free ringtones buy zanaflex cheap phentermine buy diethylpropion soma online sprint ringtones diazepam online free sharp ringtones cheap hydrocodone adipex buy xanax clomid online free tracfone ringtones sharp ringtones lisinopril wellbutrin online free kyocera ringtones free motorola ringtones cheap phentermine zoloft online cheap carisoprodol buy alprazolam cheap diethylpropion nokia ringtones albuterol online free funny ringtones valium online buy tramadol fioricet online viagra online free samsung ringtones free mtv ringtones norco online free music ringtones ativan online cheap tenuate buy lipitor free ericsson ringtones soma online ambien online cheap rivotril cialis buy tramadol ericsson ringtones mtv ringtones propecia online jazz ringtones free kyocera ringtones cheap viagra but norco alltel ringtones zanaflex online free motorola ringtones cheap viagra cheap lortab music ringtones free mp3 ringtones buy albuterol buy clonazepam ambien online xenical online free real ringtones nexium online wellbutrin free sonyericsson ringtones cheap celexa cheap diazepam nextel ringtones soma online mp3 ringtones hoodia online free nextel ringtones vicodin online free sagem ringtones free punk ringtones propecia online free mono ringtones polyphonic ringtones cheap levitra free wwe ringtones cheap lorazepam free samsung ringtones buy zanaflex

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)>