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
Seite 3 von 4     123 4      
Klaus01

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 15:12
.. kommentiere doch mal " Doc.Appendchild(RootNode); " aus.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
LPascal

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 15:23
.. kommentiere doch mal " Doc.Appendchild(RootNode); " aus.

Grüße
Klaus
Ne, bringt nichts... immer der selbe Fehler.
  Mit Zitat antworten Zitat
LPascal

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 16:14
Ich hab's jetzt so gelöst:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, ParentNode, DatenNode, VarElemen, ElementNode, ItemNode, TextNode: TDOMNode;
begin
  try
    ReadXMLFile(Doc, 'Muster.xml');

    //Doc := TXMLDocument.Create;
    //RootNode := Doc.CreateElement('Daten2');
    //Doc.Appendchild(RootNode);
    //RootNode:= Doc.DocumentElement;

    ElementNode := Doc.CreateElement('Personen');

    ItemNode:=Doc.CreateElement('Anrede');
    TextNode:=Doc.CreateTextNode('Herr');
    ItemNode.AppendChild(TextNode);
    ElementNode.AppendChild(ItemNode);

    ItemNode:=Doc.CreateElement('Vorname');
    TextNode:=Doc.CreateTextNode('Tim');
    ItemNode.AppendChild(TextNode);
    ElementNode.AppendChild(ItemNode);

    ItemNode:=Doc.CreateElement('Alter');
    TextNode:=Doc.CreateTextNode('19');
    ItemNode.AppendChild(TextNode);
    ElementNode.AppendChild(ItemNode);

    //RootNode.AppendChild(ElementNode);

    DatenNode := Doc.DocumentElement.FindNode('Header');
    DatenNode.AppendChild(ElementNode);

    WriteXMLFile(Doc, 'MusterNeu2.xml')
  finally
    Doc.Free;
  end;
end;
Der Nachteil ist nur, dass für den <Personen>-Knoten es keinen <Root>-Knoten gibt, man kann somit nicht mehrere Personen anlegen, des weiteren erscheint die neue Person im <Header>-Knoten statt <Daten>-Konoten.
Miniaturansicht angehängter Grafiken
screen.png  
  Mit Zitat antworten Zitat
LPascal

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20:04
Es scheint an dieser Zeile zu scheitern - "Doc.Appendchild(RootNode);"
Das mach wohl den Knoten RootNode zum Root-Knoten im Doc, und das muss bereits vorhanden bzw. besetzt sein, und daher der Fehler.
Kann das sein?
  Mit Zitat antworten Zitat
Klaus01

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20:25
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
Klaus
  Mit Zitat antworten Zitat
LPascal

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20: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.771 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20: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
 
#28

AW: Wert in XML finden?

  Alt 27. Okt 2020, 20: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?
Miniaturansicht angehängter Grafiken
screen2.png  
  Mit Zitat antworten Zitat
Klaus01

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

AW: Wert in XML finden?

  Alt 27. Okt 2020, 21: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 07:22 Uhr)
  Mit Zitat antworten Zitat
LPascal

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

AW: Wert in XML finden?

  Alt 29. Okt 2020, 11: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 11:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 19:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz