Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Wert in XML finden? (https://www.delphipraxis.net/205857-wert-xml-finden.html)

LPascal 26. Okt 2020 17:51

AW: Wert in XML finden?
 
Zitat:

Zitat von Klaus01 (Beitrag 1476101)
.. nun da ich Deine XML Library nicht kenne..

Im Prinzip so:
Du erstellst Dir einen neuen Knoten <Personen> diese fügst Du weiter Unterknoten hinzu.
Den <Personen>-Knoten kannst Du dann dem Knoten <Daten> hinzufügen.

Grüße
Klaus

Ja, den ersten Teil habe ich geschafft, siehe Code. Wie kann ich jetzt am besten den <Personen>-Knoten dem Knoten <Daten> hinfügen? :gruebel: Gibt es vielleicht irgendwo Beispiele?

Delphi-Quellcode:
    Doc := TXMLDocument.Create;
    RootNode := Doc.CreateElement('Personen');
    Doc.Appendchild(RootNode);

    RootNode:= Doc.DocumentElement;

    ParentNode := Doc.CreateElement('Anrede');
    VarElemen := Doc.CreateTextNode('Herr');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Vorname');
    VarElemen := Doc.CreateTextNode('Michael');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Nachname');
    VarElemen := Doc.CreateTextNode('Lücker');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Alter');
    VarElemen := Doc.CreateTextNode('19');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    WriteXMLFile(Doc, 'file.xml');

LPascal 26. Okt 2020 18:27

AW: Wert in XML finden?
 
Habe noch das hier gefunden:
Delphi-Quellcode:
NovoNo := XMLDoc.CreateElement('item');
TDOMElement(NovoNo).SetAttribute('nome', 'Item');
TDOMElement(NovoNo).SetAttribute('arquivo', 'Arquivo');
XMLDoc.DocumentElement.ChildNodes.Item[Posicao].AppendChild(NovoNo);
Die Frage ist nur, an welche Stelle (Item[Posicao]) setze ich meinen <Personen>-Knoten ein?

Klaus01 27. Okt 2020 06:49

AW: Wert in XML finden?
 
vielleicht so:
Delphi-Quellcode:
 DatenNode := Doc.DocumentElement.FindNode('Daten');
 DatenNode.AppendChild(<neuer PersonenKnoten>);
Grüße
Klaus

LPascal 27. Okt 2020 08:58

AW: Wert in XML finden?
 
Ok... müsste also so gehen, aber irgendwie mache ich noch was falsch, und ich verstehe nicht was.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, ParentNode, DatenNode, VarElemen: TDOMNode;
begin
  try
    ReadXMLFile(Doc, 'Muster.xml');

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

    RootNode:= Doc.DocumentElement;

    ParentNode := Doc.CreateElement('Anrede');
    VarElemen := Doc.CreateTextNode('Herr');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Vorname');
    VarElemen := Doc.CreateTextNode('Michael');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Nachname');
    VarElemen := Doc.CreateTextNode('Lücker');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Alter');
    VarElemen := Doc.CreateTextNode('19');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);


    DatenNode := Doc.DocumentElement.FindNode('Daten');
    DatenNode.AppendChild(RootNode);


    WriteXMLFile(Doc, 'MusterNeu.xml');
  finally
    Doc.Free;
  end;
end;

Klaus01 27. Okt 2020 10:19

AW: Wert in XML finden?
 
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, ParentNode, DatenNode, VarElemen: TDOMNode;
begin
  try
    ReadXMLFile(Doc, 'Muster.xml');

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

    RootNode:= Doc.DocumentElement;
In der letzen Zeile überschreist Du die Adresse des RootNodes.
Mag sein, dass das nicht so sein soll - wie schaut denn Dein Ergebnis aus?

Grüße
Klaus

LPascal 27. Okt 2020 10:28

AW: Wert in XML finden?
 
Stimmt, das habe ich übersehen. Mein Ergebnis sieht so aus, aber irgendwie werde ich nicht warm damit, irgendwo ist da noch ein Fehler, denn ich nicht sehe.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, ParentNode, DatenNode, VarElemen: TDOMNode;
begin
  try
    ReadXMLFile(Doc, 'Muster.xml');

    RootNode := Doc.CreateElement('Personen');
    Doc.Appendchild(RootNode);

    ParentNode := Doc.CreateElement('Anrede');
    VarElemen := Doc.CreateTextNode('Herr');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Vorname');
    VarElemen := Doc.CreateTextNode('Michael');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Nachname');
    VarElemen := Doc.CreateTextNode('Locker');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);

    ParentNode := Doc.CreateElement('Alter');
    VarElemen := Doc.CreateTextNode('29');
    ParentNode.Appendchild(VarElemen);
    RootNode.AppendChild(ParentNode);


    DatenNode := Doc.DocumentElement.FindNode('Daten');
    DatenNode.AppendChild(RootNode);


    WriteXMLFile(Doc, 'MusterNeu.xml');
  finally
    Doc.Free;
  end;
end;

Klaus01 27. Okt 2020 11:23

AW: Wert in XML finden?
 
.. mit Ergebnis meinte ich die erstellt XML Datei.
Werden die Konten zu den falschen Knoten hinzugefügt?

Grüße
Klaus

LPascal 27. Okt 2020 11:27

AW: Wert in XML finden?
 
Zitat:

Zitat von Klaus01 (Beitrag 1476185)
.. mit Ergebnis meinte ich die erstellt XML Datei.
Werden die Konten zu den falschen Knoten hinzugefügt?

Grüße
Klaus

Dazu kommt es gar nicht, das Prog stürzt ab, mit der Meldung "EDOMHierarchyRequest in Document.Insert.Before".

Klaus01 27. Okt 2020 13:02

AW: Wert in XML finden?
 
.. wann kommt die Fehlermeldung (bitte mal mit F8 durch den Code gehen)?

Das Tutorial https://wiki.freepascal.org/XML_Tutorial kenst Du wahrscheinlich schon -oder?

Grüße
Klaus

LPascal 27. Okt 2020 14:07

AW: Wert in XML finden?
 
Zitat:

Zitat von Klaus01 (Beitrag 1476192)
.. wann kommt die Fehlermeldung (bitte mal mit F8 durch den Code gehen)?

Das Tutorial https://wiki.freepascal.org/XML_Tutorial kenst Du wahrscheinlich schon -oder?

Grüße
Klaus

Ja, der Fehler kommt hier schon. Ja... :wall:
Delphi-Quellcode:
    RootNode := Doc.CreateElement('Personen');
    Doc.Appendchild(RootNode);
Das Tutorial kenne ich, da gucke ich auch, bin aber in dem Thema XML noch nicht ganz drin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr.
Seite 2 von 4     12 34      

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