CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   XML (http://www.codingforums.com/forumdisplay.php?f=3)
-   -   Get Specific Node Values (http://www.codingforums.com/showthread.php?t=279515)

MikeEller 10-26-2012 03:15 PM

Get Specific Node Values
 
Hello All,

I am doing a little xml learning.
Here is what I want to do....

I want to select a node where a child node has a specific value. Once I have that node, I then want to get other specific child node values to use/display in my html.
So, I am searching the xml file for a specific value in a node. Once found, I want to select the parent of that node and then get at the child node values.

Example:

Code:

<?xml version=1.0"?>
  <locations>
    <loc>
      <id>121</id>
      <user>Joe Smith</user>
      <section>AAA</section>
    </loc>
    <loc>
      <id>122</id>
      <user>Bill Jones</user>
      <section>BBB</section>
    </loc>
  </locations>

So I want to search the xml file above and select the "loc" node whose "id" node value = 122. I then want to get the remaining child nodes (user and section) from that selected "loc" node.

I am using javascript to do this.

It seems it should be easy enough to do....I just have not gotten anything to work yet.
Any assistance would be greatly appreciated.

Regards,
Mike

sunfighter 10-26-2012 04:35 PM

First: your xml code, first line reads
Code:

<?xml version=1.0"?>
It should be
Code:

<?xml version="1.0"?>
I saved it as location.xml
This html does what you want:

Code:

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","location.xml",false);
xmlhttp.send('');
xmlDoc=xmlhttp.responseXML;

var x=xmlDoc.getElementsByTagName("loc");
for (i=0;i<x.length;i++)
{
        if(x[i].getElementsByTagName("id")[0].childNodes[0].nodeValue == 122)
        {
                document.write(x[i].getElementsByTagName("id")[0].childNodes[0].nodeValue+"<br />");
                document.write(x[i].getElementsByTagName("user")[0].childNodes[0].nodeValue+"<br />");
                document.write(x[i].getElementsByTagName("section")[0].childNodes[0].nodeValue);
        }
}
</script>
</body>
</html>


MikeEller 10-26-2012 05:53 PM

I thought I could do something like that.
I was hoping that xpath would be able to to just allow me to "grab" the node that contained the value and then use the child nodes within.


All times are GMT +1. The time now is 06:46 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.