Jan: XML-Daten mit JavaScript abfragen

Beitrag lesen

Hallo,

Hat Jemand eine Ideee, wie man die Performance optimieren kann? Habe die Namen der Knoten schon auf das Minimum reduziert, so dass die XML-Datei nur noch 370 KB groß ist. Außerdem habe ich die Abfrage bereits so abgeändert, daß sie nicht mehr alle Knoten durchläuft, sondern nur noch einen bestimmten Knoten eines jeden Datensatzes. Läuft aber immer noch zu langsam.

Dazu muesstest Du schon etwas konkreter werden. Sind die XML-Daten als Dateninsel in ein HTML-Dokument eingebunden? Welche DOM-Methoden wendest Du wie an?

MfG, Thomas

Die XML-Daten sind in einem separaten XML-File. Sie werden mit einem JS abgefragt, welches in eine html-Datei eingebettet ist. Diese sieht so aus:

<html>
<head>
<title>Test</title>
<script language="JavaScript">
var WurzelElement;
var AlleKnoten, AnzahlDerKnoten, AktuellerKnoten, AnzahlDerTagsImAktuellenKnoten, Suchbegriff, LetzterKnoten;
var a, b, c, d = 0;
var XMLDokument = new ActiveXObject("microsoft.xmldom");
XMLDokument.load("ccd.xml");

function ausgabe()
{
 Suchbegriff=document.Formular.T1.value;
 if (Suchbegriff != null)
 {
  WurzelElement=XMLDokument.documentElement;
  AlleKnoten=WurzelElement.childNodes;
  AnzahlDerKnoten = WurzelElement.childNodes.length;
  // Tabellenkopf-Layout
  window.document.write("<link type='text/css' rel='stylesheet' href='pi_intranet.css'><p class='standard_ccd'><a href='javascript:location.reload()'>Zurück zur Suche</a></p><table width='100%'><tr class='content_h4'><td>Attribut1</td><td>Attribut2</td><td>Attribut3</td><td>Attribut4</td><td>Attribut5</td><td>Attribut6</td><td>Attribut7</td><td>Attribut8</td><td>Attribut9</td><td>Attribut10</td><td>Attribut11</td></tr>");
  for (a = 0; a < AnzahlDerKnoten; a++)
  {
   //Modifizierung, da nur nach einem Attribut gesucht wird
   AktuellerKnoten = WurzelElement.childNodes.item(a);
   AnzahlDerTagsImAktuellenKnoten = AktuellerKnoten.childNodes.length;
   if (AktuellerKnoten.childNodes.item(0).text.toLowerCase().indexOf(Suchbegriff.toLowerCase()) >= 0 && AktuellerKnoten != LetzterKnoten)
   {
    window.document.write("<tr class='standard_ccd'>");
    for (c=0; c < AnzahlDerTagsImAktuellenKnoten; c++)
    {
     window.document.write("<td>"+AktuellerKnoten.childNodes.item(c).text+"</td>");
     d=1;
     // Änderung
     LetzterKnoten = AktuellerKnoten;
    }
    window.document.write("</tr>");
   }
  }
 }
 window.document.write("</table>");
 if (d==0)
 {
  alert("Suchbegriff nicht gefunden!");
 }
}

Gruss

Jan