On 2022-01-02 16:44, Wendelin Uez <
wu...@online.de> wrote:
> Ich mache gerade meine ersten Schritte mit XML, bspw. möchte ich die
> Daten von Windows-Kontakten (*.contact) auslesen und updaten.
>
> Deren überschaubare Struktur ließ mich zuerst dran denken, die Dateien
> selbst zu parsen und das Ganze wieder zurück zu schreiben. Wäre bei
> den bekannten Tags nicht mehr als eine Fleißaufgabe,
Unterschätze XML nicht. Die Grund-Idee war zwar, das einfach parsebar zu
machen, aber wie das so ist, wenn ein Komitee eine Sprache entwirft, war
das Ergebnis dann doch nicht so einfach.
> wäre da nicht das potentielle Problem, daß so eine Datei eines Tages
> auch mal andere, unbekannte Tags haben könnte, deren Datenstruktur ich
> respektive mein Parser noch gar nicht kennt.
>
> Ich bekomme dann zwar mit, daß jetzt ein unbekanntes Element
> <tagsowieso> beginnt, aber wie erkenne ich, wo es endet, wenn ich die
> Struktur der dazwischen liegenden Daten gar nicht kenne? Das
> abschließende </tagsowieso>, das irgendwann im Datenstrom auftaucht,
> muß ja nicht zwangsweise genau das zugehörige abschließende Tag sein,
> es könnte ja auch erst Teil eines eingebetteten Texts einer
> unbekannten Datenstruktur sein, das gar nicht zu interpretieren wäre.
Nein, kann es nicht sein. Ein XML-File lässt sich immer eindeutig
parsen, auch wenn Du die Struktur nicht kennst. Das ist der große
Unterschied zu SGML.
> Wie lösen andere Parser dieses Problem?
Sie halten sich an die Spezifikation. Und wenn Du wirklich selbst einen
XML-Parser schreiben willst, würde ich auch sehr dazu raten, damit zu
beginnen, die Spezifikation zu lesen und nicht die Syntax auf Grund von
Beispielen und Baugefühl zu rekonstruieren.
> Ich könnte auch statt selbst zu parsen auf irgendwelche DLLs
> zurückgreifen, die mir ein .xml-File parsen und Werte auslesen und
> wieder setzen lassen. Allerdings kenne ich bislang noch keine (habe
> nur gelesen, daß es wohl in Windows eine solche bereits gäbe), aber
> läßt sich damit die bekannte Teilmenge an Tags extrahieren und updaten
> und danach die komplette Struktur, die ja ansonsten unverändert
> bleibt, also incl. der "unverstandenen" Teile, wieder zurückschreiben?
In welcher Programmiersprache willst Du das denn schreiben? In den
meisten Sprachen gibt es (mindestens) einen "Standard"-XML-Parser.
hp