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:
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>
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?
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>