DHL: Mit JavaScript auf XML-Daten zugreifen

hallo,

ich habe folgendes problem: ich sollte auf eine xml-datendatei mit javascript zugreifen. dazu gibt's zwar diverse artikel auf selfaktuell, aber ich kann weder wie vorgeschlagen zuerst php, SSI o.ä. verwenden, noch sind applets gerne gesehen... da das ganze sowieso nur IE-fähig sein muss, hätte ich aber nichts gegen eine verwendung des applets, das mit IE mitgeliefert wird ( http://selfhtml.teamone.de/dhtml/modelle/datenanbindung.htm#xml ). was ich aber aus diesem beitrag nicht herauslesen kann, ist, wie/ob es möglich ist, normal mit dem node-objekt auf die so eingelesenen daten zuzugreifen.

mein eigener lösungsansatz wäre gewesen:

HTML:
<iframe id="daten" src="datei.xml"></iframe>

JAVASCRIPT:
function test()
{
 alert(daten.document.getElementsByTagName("tagname")[0].getAttribute("attributname"));
}

leider bewirkt das die fehlermeldung "Zugriff verweigert". gibt es eine möglichkeit, unter den genannten einschränkungen auf die gewünschte art auf xml-daten zuzugreifen?

  1. Hallo,

    leider bewirkt das die fehlermeldung "Zugriff verweigert". gibt es eine möglichkeit, unter den genannten einschränkungen auf die gewünschte art auf xml-daten zuzugreifen?

    Wenn es fuer IE-only sein soll, versuche es mal so:

    test.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <root>

    <abc>Testtext 1</abc>
      <abc xyz="0815">Testtext 2</abc>
      <abc>Testtext 3</abc>

    </root>

    test.htm

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Test by TM 12/02</title>
    <script language="JavaScript" type="text/javascript">
    <!--

    function getXML()
    {
      var xmlfile,xmlinput;
      xmlfile="test.xml";

    // XML laden
      xmlinput=new ActiveXObject("MSXML2.DOMDocument");
      xmlinput.async=false;
      xmlinput.load(xmlfile);

    alert(xmlinput.documentElement.getElementsByTagName("abc")[0].firstChild.nodeValue); // --> Testtext 1
      alert(xmlinput.documentElement.getElementsByTagName("abc")[1].getAttribute("xyz"));  // --> 0815
    }

    //-->
    </script>
    </head>
    <body onload="getXML()">
    <p>XML-Test</p>
    </body>
    </html>

    MfG, Thomas

    1. danke erstmal, aber leider bewirkt diese zeile

      xmlinput=new ActiveXObject("MSXML2.DOMDocument");

      die meldung "Automatisierungsserver kann Objekt nicht erstellen." Woran könnte das liegen? (hier läuft IE 5.5, Win ME)

      1. Hallo,

        xmlinput=new ActiveXObject("MSXML2.DOMDocument");

        die meldung "Automatisierungsserver kann Objekt nicht erstellen." Woran könnte das liegen? (hier läuft IE 5.5, Win ME)

        ActiveX-Sicherheitsoptionen in der jeweiligen Zone ueberpruefen.

        MfG, Thomas

        1. Hmm...
          leider kein Unterschied festzustellen :(

          ---
          Für das strenge Forum:

          (Zeilenumbruch)
          .,! (Satzzeichen)
          Ab Bc (Grossbuchstaben)
          (ob die Antwort so akzeptiert wird? %-/ )

          1. Hallo,

            Hmm...
            leider kein Unterschied festzustellen :(

            Dann liegt es vermutlich an der MSXML-Parserversion. Besorge Dir mal die Version 3.x bzw. 4 von http://msdn.microsoft.com/xml/.

            Evtl. hilft auch das Verwenden von

            xmlinput=new ActiveXObject("MSXML2.DOMDocument.3.0");
            oder
            xmlinput=new ActiveXObject("MSXML2.DOMDocument.4.0");

            statt
            xmlinput=new ActiveXObject("MSXML2.DOMDocument");

            Allerdings wird bei letzterer Referenzierung auf den Standardparser zurueckgegriffen, was bei mir automatisch die 3.x-Version anspricht.

            MfG, Thomas