Go Back   CodingForums.com > :: Client side development > XML

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 03-10-2013, 01:54 AM   PM User | #1
ElizaKaye
New Coder

 
Join Date: Nov 2012
Posts: 12
Thanks: 4
Thanked 0 Times in 0 Posts
ElizaKaye is an unknown quantity at this point
Working with xml and Javascript in HTML form

Hi

I have searched high and low to get some real examples of this, but no luck.
What I need to do is input a name into an input box and search the xml file (which has three different elements eg. customers root element, person/first and last. Address/street/city/state/postcode/country and Phone) to match that name. (I don't know what to do if there is more than one person with that same name).
When the match is correct then I need to bring through the rest of the relevant info belong to that person. At the moment the xml file is is working fine and coming up into a table. But now it needs the html file. I have tried many different examples of html files but cannot get it to bring through any data. Thanks in anticipation

[CODE]

<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="applyt.xsl" ?>
<customers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="applydtd.dtd">

<person>
<name>
<first>John</first>
<last>Smith</last>
</name>
<address>
<street>123 Oak St</street>
<city>PERTH</city>
<state>WA</state>
<postcode>4372</postcode>
<country>Australia</country>
<email>js@info.com.au</email>
</address>
<phone>0754641323</phone>
</person>
<person>
<name>
<first>Zack</first>
<last>Zwyker</last>
</name>
<address>
<street>368 Elm St</street>
<city>SYDNEY</city>
<state>NSW</state>
<postcode>2000</postcode>
<country>Australia</country>
<email>zz@info.com.au</email>
</address>
<phone>0478964234</phone>
</person>
<person>
<name>
<first>Albert</first>
<last>Aikens</last>
</name>
<address>
<street>368 Cedar St</street>
<city>BRISBANE</city>
<state>QLD</state>
<postcode>7145</postcode>
<country>Australia</country>
<email>aa$info.com.au</email>

</address>
<phone>0256897426></phone>
</person>
<person>
<name>
<first>Michael</first>
<last>Jones</last>
</name>
<address>
<street>15 Cherry St</street>
<city>SYDNEY</city>
<state>NSW</state>
<postcode>2000</postcode>
<country>Australia</country>
<email>jj@info.com.au</email>
</address>
<phone>0297684321</phone>
</person>
</customers>







[CODE]

Last edited by ElizaKaye; 03-10-2013 at 01:57 AM..
ElizaKaye is offline   Reply With Quote
Old 03-10-2013, 08:26 PM   PM User | #2
sunfighter
Senior Coder

 
Join Date: Jan 2011
Location: Missouri
Posts: 2,498
Thanks: 18
Thanked 361 Times in 360 Posts
sunfighter is on a distinguished road
To put your code into the CODE tags use the hash mark (#) located in the tool bar above the Message box.

Your xml show nicely because it uses a style sheet named applyt.xsl.

I saved your xml file as customers.xml since you did not tell us a name for it. The following is html to display what you wanted. BUT you have to know the name. I could add js to show all the names or you could try it as an exercise.
Code:
<!DOCTYPE html>   <!-- Zack Zwyker    zack zwyker   -->
<html>
<body>
<input type="text" onblur="display(this.value);">

<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function display(Aname){
xml=loadXMLDoc("customers.xml");
path="/customers/person/name"

x=xml.getElementsByTagName("first")[0].childNodes[0];
	for(z=0; z<x.length; z++){
		x=xml.getElementsByTagName("first")[z].childNodes[0];
		y=xml.getElementsByTagName("last")[z].childNodes[0];
		TheName = x.nodeValue+" "+y.nodeValue;
		if(TheName.toLowerCase() == Aname.toLowerCase()){
			document.write(x.nodeValue+" "+y.nodeValue+"<br />");
			document.write(xml.getElementsByTagName("street")[z].childNodes[0].nodeValue+"<br />");
			document.write(xml.getElementsByTagName("city")[z].childNodes[0].nodeValue+"<br />");
			document.write(xml.getElementsByTagName("state")[z].childNodes[0].nodeValue+"<br />");
			document.write(xml.getElementsByTagName("postcode")[z].childNodes[0].nodeValue+"<br />");
			document.write(xml.getElementsByTagName("country")[z].childNodes[0].nodeValue+"<br />");
			document.write(xml.getElementsByTagName("email")[z].childNodes[0].nodeValue+"<br />");
		}
	}
}
</script>
</body>
</html>
sunfighter is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 01:22 AM.


Advertisement
Log in to turn off these ads.