Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Unterschiedliche Record-Strukturen in XML speichern

  Alt 18. Apr 2004, 15:09
Zitat von Luckie:
Und zwar aus zwei Gründen: Erstmal will ich mich etwas mit XML beschäftigen und [...]
Guter Grund.

Zitat:
[...] da Mathias S. aus F. bei C. gesagt hat, man könne auch auf die XML-Datei online zugreifen ohne sie runterzuladen.
Ja, das habe ich gesagt. Und mit dem Updateprogramm habe ich das ja auch bewiesen. Aber streng genommen wird die XML-Datei beim MS-XML-Parser bspw. in den Cache geladen. Aber trotzdem: selbst darum kümmern musst du dich nicht.

Zitat:
[...] Da auch ein Abgleich möglich sein soll, wenn man die XML-Datei von wo anders editiert hat, wollte ich entsprechende Infos in der XML-Datei speichern [...]
Na ja, hier weiß ich nicht genau was du meinst. Es ist sicher möglich, auf die XML-Datei zuzugreifen, wenn diese auf deinem Server liegt. Aber auf dem Server speichern wird wohl mit dem Parser nicht gehen. Dazu müsstest du dann wahrscheinlich doch wieder mit FTP ran.

Zitat:
Jetzt die Frage: Ist das ohne weiteres möglich oder muss man da irgendwelche Klimmzüge für machen?
Eigentlich nicht. Da du dir bei XML ja eigene Tags ausdenken kannst, hängt die Dokumentenstruktur ganz von dir ab. Du musst eben nur bedenken, dass es nur einen root-Knoten geben darf, und dass die untergeordneten Namen alle dem gleichen Prinzip folgen sollten, etwa
Code:
<?xml version="1.0"?>
<adressen>
  <kontakt>
    <name>S.</name>
    <vorname>Mathias</vorname>
    <wohnort>F. bei C.</wohnort>
    <iq>menschliche Skala nicht ausreichend</iq>
  </kontakt>
</adressen>
Da ich nur für den Parser von Microsoft sprechen kann, brauchst du im Programm auch nicht mit Records hantieren. Du kannst direkt mit IXMLDOMNode-Objekten arbeiten und diese relativ schnell auslesen:
Delphi-Quellcode:
kontakte := xmldoc.selectNodes('/adressen/kontakt');
// kontakte = IXMLDOMNodeList
Damit hättest du vereinfacht gesagt ein Array aus IXMLDOMNodes mit allen gefundenen "<kontakt>"-Knoten samt Inhalt, den du dann auslesen und in deinem Programm darstellen kannst.

Und wenn du auch eine DTD mit passender Definition integrierst, dann meckert der Parser beim Laden bereits, wenn irgendwas an der Datei nicht stimmt. Ein nicht zu unterschätzender Vorteil, weil manipulierte oder versehentlich falsche Dateien sofort auffallen.
  Mit Zitat antworten Zitat