AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wert in XML finden?

Ein Thema von LPascal · begonnen am 23. Okt 2020 · letzter Beitrag vom 13. Nov 2020
Antwort Antwort
LPascal

Registriert seit: 23. Okt 2020
33 Beiträge
 
#1

AW: Wert in XML finden?

  Alt 27. Okt 2020, 19:32
Guten Abend,

das Teilmacht was Du ihm sagst
Delphi-Quellcode:
    DatenNode := Doc.DocumentElement.FindNode('Header');
    DatenNode.AppendChild(ElementNode);
Demnach wird der neue <Personen> Knoten an den Header angehängt.
Der gemeinsame Aufhänger für die Personen ist aber der <Daten> Knoten.

Grüße
Klaus
Mit <Daten> stürzt das Programm mit einem Exception-Fehler ab. Ich verstehe jetzt nur Bahnhof.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wert in XML finden?

  Alt 27. Okt 2020, 19:37
Delphi-Quellcode:
DatenNode := Doc.DocumentElement.FindNode('Header').FindNode('Daten');
DatenNode.AppendChild(ElementNode);
macht das obige einen Unterschied?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
33 Beiträge
 
#3

AW: Wert in XML finden?

  Alt 27. Okt 2020, 19:46
Das geht? Klasse, jetzt funkt es! Riiiiiesen Dank Dir!
Jetzt aber noch eine Hürde. Ich muss ja zwei Personen einfügen. Wie kann ich das gleiche Element bzw. <Personen>-Konoten noch einmal anlegen, ohne das erste zu überschrieben?
Angehängte Grafiken
Dateityp: png screen2.PNG (11,9 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20:32
ElementNode := Doc.CreateElement('Personen'); erstellt doch bei jedem Aufruf einem neuen Knoten oder?
Damit wird der alte nicht überschrieben.

Ich würde das ganze anfügen in eine Methode mit entsprechenden Parametern auslagern.

Grüße
Klaus
Klaus

Geändert von Klaus01 (28. Okt 2020 um 06:22 Uhr)
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
33 Beiträge
 
#5

AW: Wert in XML finden?

  Alt 29. Okt 2020, 10:42
ElementNode := Doc.CreateElement('Personen'); erstellt doch bei jedem Aufruf einem neuen Knoten oder?
Damit wird der alte nicht überschrieben.

Ich würde das ganze anfügen in eine Methode mit entsprechenden Parametern auslagern.

Grüße
Klaus
Ja, ich weiß nicht wieso, aber bei wird wird das überschrieben.
Wahrscheinlich weil ich keinen Root-Knoten habe. Aber wenn ich diesen anlege, dann kann ich mein Konstrukt nicht in die bestehende XML einfügen, da es wohl zu Root-Konflikten kommt.

Geändert von LPascal (29. Okt 2020 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Wert in XML finden?

  Alt 30. Okt 2020, 06:59
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, ParentNode, DatenNode, VarElemen, ElementNode, ItemNode, TextNode: TDOMNode;
begin
  try
    ReadXMLFile(Doc, 'Muster.xml');
    // tue etwas mit dem XMLDoc
    WriteXMLFile(Doc, 'MusterNeu2.xml')
  finally
    Doc.Free;
  end;
end;
wenn Du nach diesem Prinzip vorgehst, liest Du aus Muster.xml ein machst Änderungen und speicherst unter MusterNeu2.xml ab.
Dann liest Du beim nächsten ButtonClick wieder Muster.xml ein (da sind keine Änderungen drin) machst wieder Änderungen und speicherst (überschreibst) MusterNeu2.xml. Damit sind die ersten Änderungen weg.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
33 Beiträge
 
#7

AW: Wert in XML finden?

  Alt 12. Nov 2020, 12:21
Kam jetzt wieder dazu hier weiterzumachen. Und es hat alles super geklappt, noch mal an der Stelle vielen Dank!

Noch eine Frage hätte ich, ich möchte den Knoten <Daten> löschen, versuche ich auch, aber irgendwas mache ich falsch, und sehe nicht was.

Code:
<PDB>
  <Header>
    <Daten>
      <Personen>
        <Anrede>Herr</Anrede>
        <Vorname>Otto</Vorname>
        <Nachname>Müller</Nachname>
        <Alter>45</Alter>
      </Personen>
   </Daten>
  </Header>
</PDB>
Delphi-Quellcode:
    DatenNode := Doc.DocumentElement.FindNode('PDB').FindNode('Header');
    DatenNode.RemoveChild(DatenNode);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz