Sto testando un paio di esempi da un libro su Ajax. Sono al capitolo che tratta anche l'XML e per accedere ai nodi usa firstChild, lastChild etc etc.
Siccome per me questo metodo sarebbe troppo dispendioso, preferirei utilizzare XPath, che nn è spiegato sul libro.
Questo è il file HTML con lo script JS:
La parte in corsivo è la parte che "scende" a prelevare i dati nel documento XML. Ovviamente se potessi usare XPATH il tutto si risolverebbe ad una riga di codice per individuare ciò che mi interessa. Qualcuno saprebbe come fare?codice:<html> <head> <title>Using Ajax and XML</title> <script language = "javascript"> function getGuest() { var mozillaFlag = false; var XMLHttpRequestObject = false; if (window.XMLHttpRequest) { XMLHttpRequestObject = new XMLHttpRequest(); XMLHttpRequestObject.overrideMimeType("text/xml"); mozillaFlag = true; } else if (window.ActiveXObject) { XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } if(XMLHttpRequestObject) { XMLHttpRequestObject.open("GET", "guest.xml", true); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { var xmlDocument = XMLHttpRequestObject.responseXML; if(mozillaFlag){ removeWhitespace(xmlDocument); } displayGuest(xmlDocument); } } XMLHttpRequestObject.send(null); } } function displayGuest (xmldoc) { var eventsNode, eventNode, peopleNode; var firstNameNode, lastNameNode, displayText; eventNode = eventsNode.firstChild; peopleNode = eventNode.lastChild; personNode = peopleNode.lastChild; firstNameNode = personNode.firstChild; lastNameNode = firstNameNode.nextSibling; displayText = "The main guest was " + firstNameNode.firstChild.nodeValue + ' ' + lastNameNode.firstChild.nodeValue; var target = document.getElementById("targetDiv"); target.innerHTML=displayText; } function removeWhitespace(xml) { var loopIndex; for (loopIndex = 0; loopIndex < xml.childNodes.length; loopIndex++) { var currentNode = xml.childNodes[loopIndex]; if (currentNode.nodeType == 1) { removeWhitespace(currentNode); } if (((/^\s+$/.test(currentNode.nodeValue))) && (currentNode.nodeType == 3)) { xml.removeChild(xml.childNodes[loopIndex--]); } } } </script> </head> <body> <h1>Using Ajax and XML</h1> <form> <input type = "button" value = "Get the main guest" onclick = "getGuest()"> </form> <div id="targetDiv" width =100 height=100> Who was the main guest? </div> </body> </html>
Questo è il file guest.xml:
codice:<events> <event type="informal"> <event_title>15th award ceremony</event_title> <event_number>1207</event_number> <subject>gala event</subject> <date>7/4/2006</date> <people> <person attendance="present"> <first_name>Sam</first_name> <last_name>Edwards</last_name> </person> <person attendance="absent"> <first_name>Sally</first_name> <last_name>Jackson</last_name> </person> <person attendance="present"> <first_name>Cary</first_name> <last_name>Grant</last_name> </person> </people> </event> </events>

Rispondi quotando