Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#1

Platzhalter in XML-Datei durch (mehrzeiligen) Text ersetzen

  Alt 16. Feb 2021, 16:05
Bislang musste ich mich nicht näher mit XML-Dateien befassen, so dass ich mich in Bezug darauf als relativen Anfänger bezeichnen kann.

Ich habe XML-Dateien (Teile von Word bzw. Libre-Office-Dokument-Vorlagen), dort sind Platzhalter drin und die möchte ich entweder durch einen einzeiligen Text oder durch mehrzeiligen Text (am besten mit Softbreak-Umbrüchen) ersetzen.

Zwar kriege ich das vom Prinzip her durch auch mit einfachem Suchen und ersetzen hin, aber wenn ein Anwender die Vorlagen-Dokumente verändert, dann ändert sich die XML-Stuktur (die Tags) in einer Art und Weise, die ich nicht vorhersehen kann und dann funktionieren meine Suchen- und Ersetzen Bemühungen nicht mehr (die TAG-Struktur kommt dann irgendwie durcheinander).

Also Anlass sich jetzt doch mal mit XML befassen zu müssen.

Mir liegen die XML-Dateien als TMemorystream vor, in einer FMX-Anwendung.

Kann mir freundlicherweise jemand sagen, welche mit Delphi mitgelieferte XML-Klasse ich hier verwenden sollte?

Habe hier TXMLDocument gefunden, da kann ich das XML-dokument per Stream oder file laden. Finde aber keine Items-Eigenschaft oder ähnliches, wie ich da durch iterieren kann.

Also, wie iteriere ich hier durch die einzelnen Knoten, um meine Platzhalter-Texte zu finden und wie ersetze ich ihn (einzeilig dürfte einfach sein, aber mehrzeilig)?

In der Anlage mal die Beispiel-XML-Dateien und wie diese als Vorlage (hier in Word) aussehen.

Den Platzhalter {Adr_Alles} möchte ich durch eine korrekt formatierte Adresse ersetzen, also mehrere Zeilen (Anrede, Name, Straße, PLZ und Ort), die anderen Platzhalter durch einfachen, einzeiligen Text.
Miniaturansicht angehängter Grafiken
word.jpg  
Angehängte Dateien
Dateityp: xml content.xml (10,3 KB, 5x aufgerufen)
Dateityp: xml document.xml (11,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat