Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Apr 2005
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    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

  2. #2
    Master Coder sunfighter's Avatar
    Join Date
    Jan 2011
    Location
    Washington
    Posts
    6,277
    Thanks
    30
    Thanked 863 Times in 861 Posts
    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>

  3. #3
    New to the CF scene
    Join Date
    Apr 2005
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    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.


 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •