XML dynamisch laden / Texte ändern
Michael Schwarz
- xml
Hallo,
ich habe eine dynamisch erzeugt XML Datei xml.asp. Diese enthält Zustände von Maschinen (Temperatur, Seiten, Auftrag,...). Nun möchte ich diese Daten in einer HTML Seite anzeigen - kein Problem. Alle 5 Sekunden sollen die Daten aber aktualiesiert werden, aber ohne die Seite neuzuladen und ohne eine Tabelle neu zu zeichnen (Eine Tabelle wird immer wieder neu aufgebaut, wenn man den XML src Tag ändern oder neu setzt!).
Wie kann ich die Daten (eigentlich müssten es Felder sein) akutalisieren?
Eine Lösung von mir war, eine feste Seite mit bestimmten Feldern zu machen; z.Bsp.: MASCHINE[1..10], STATUS[1..10], TEMPERATUR[1..10],.... Diese Felder (z.Bsp. <SPAN>) können mit innerText geändert werden.
Der Nachteil: Es können nur 10 Maschinen angezeigt werden, geht also nicht.
Über eine kleine Hilfe oder Link wäre ich sehr dankbar!
CIAO
Michael
Hi Michael,
da du XML in einer Seite einbaust, gehe ich davon aus, dass du den IE5 benutzt. Falls es dir nix ausmacht, eine EI5-abhängige Lösung einzusetzen, schlage ich vor, dass du dich mit der download-Methode auseinandersetzt. Damit kannst du alle 5 Minuten im Hintergrund eine Datei (xml.asp) downloaden, ohne dass die Oberfläche verschwindet. Wenn der Download beendet ist, wird eine Funktion aufgerufen, die du so programmierst, dass diese deine Daten an der entsprechenden Stelle einbaut.
Für Beispiele und Doku: http://msdn.microsoft.com/workshop/author/behaviors/reference/behaviors/download.asp
Gruß,
UlfL
Hallo Ulf,
ich benutzer den IE5 und kann auch XML Dateien im Hintergrund laden, und einer Tabelle zuordnen.
Mein Problem ist aber...
Ich habe eine XML Datei:
<start>
<item value=1>
<status>online</status>
<code>Maschine 1</code>
</item>
<item value=2>
<status>offline</status>
<code>Maschine X</code>
</item>
</start>
Jetzt möchte ich mir die Felder status und code anzeigen lassen. Wenn sich diese Felder in der XML Datei ändern, sollen die entsprechenden Felder auch geändert werden, also z.Bsp. <SPAN> Tags! Diese sollen aber immer automatisch erzeugt werden, je nach dem wie viele Maschinen vorhanden sind. Das ganze soll also eine "Echtzeit-Statusanzeige" werden, ähnlich einem JavaApplet, welches sich die Daten auch als wieder holt, und sie anzeigt.
Naja, ich glaube mit meinem Problem muss ich alleine bleiben...!
Danke trotzdem...
Für Beispiele und Doku: http://msdn.microsoft.com/workshop/author/behaviors/reference/behaviors/download.asp
Hi Michael,
Diese sollen aber immer automatisch erzeugt werden, je nach dem wie viele Maschinen vorhanden sind.
Das hier ist mir einfach so durch den Kopf gegangen, vielleicht sind Syntaxfehler dabei. Soll nur als Denkanstoss dienen:
Im IE5 kannst du feststellen, *wie viele* Maschinen geliefert wurden. Um dein Datensatz durchsuchen zu können, könntest du dieser beispielsweise in ein versteckten <IFRAME STYLE="DISPLAY:NONE" NAME="oFrame"> zwischenspeichern.
Danach kannst du mit
cMaschinen = document.oFrame.document.getElementsByTagName("code");
deine Maschinen als Collection aus dem Datensatz extrahieren, und mit
iAnzahlMaschinen = cMaschinen.length;
feststellen, wie viele es sind. Danach sollte es nicht mehr SO schwierig sein, diese in die Seite zu schreiben, da
for(i=0; i<iAnzahlMaschinen; i++){
oMaschine = cMaschinen(i).innerText;
}
die Maschinen eins nach dem anderen zurückliefern sollte.
Für nähere Infos über Collections: http://msdn.microsoft.com/workshop/author/dhtml/reference/collections.asp
Gruß,
UlfL