Autor Beitrag
AlexII
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Mo 26.10.20 12:36 
Hallo Leute,

ich habe hier ein Beispiel gefunden wie ich eine XML-Datei erstelle, nur ist die zu verschachtelt für mich. Irgendwie stehe ich auf dem Schlauch und verstehe nicht wie ich den Code so modifiziere, dass ich den parent node "usuario" weg habe? Dass die XML am Ende so aussieht?

So wird sie jetzt erstellt:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
<register>
  <usuario>
    <nome>Fernando</nome>
    <idade>32</idade>
  <usuario>
</register>


und das ist mein Ziel:
ausblenden XML-Daten
1:
2:
3:
4:
<register>
  <nome>Fernando</nome>
  <idade>32</idade>
</register>


Hier mein Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
procedure TForm1.Button3Click(Sender: TObject);
var
  Doc: TXMLDocument;
  RootNode, parentNode, nofilho: TDOMNode;
begin
  try
    Doc := TXMLDocument.Create;

    RootNode := Doc.CreateElement('register');
    Doc.Appendchild(RootNode);
    // Create a parent node
    RootNode:= Doc.DocumentElement;
    parentNode := Doc.CreateElement('usuario');
    RootNode.Appendchild(parentNode);

    // Create a child node
    parentNode := Doc.CreateElement('nome');
    nofilho := Doc.CreateTextNode('Fernando');
    parentNode.Appendchild(nofilho);
    RootNode.ChildNodes.Item[0].AppendChild(parentNode);

    // Create a child node
    parentNode := Doc.CreateElement('idade');
    nofilho := Doc.CreateTextNode('32');
    parentNode.Appendchild(nofilho);
    RootNode.ChildNodes.Item[0].AppendChild(parentNode);

    writeXMLFile(Doc, 'test.xml');
  finally
    Doc.Free;
  end;
end;


Vielen Dank für die Anregungen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.10.20 15:02 
Tut mir leid, dass ich so frage, aber hast du den Quelltext aus der Lazarus Doku denn verstanden? Ich meine du erstellst dort ja explizit den Knoten 'usuario' mit Doc.CreateElement('usuario')...

Wenn du den nicht brauchst, warum erstellst du ihn dann statt des Knotens, den du möchtest?
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Mo 26.10.20 18:27 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Tut mir leid, dass ich so frage, aber hast du den Quelltext aus der Lazarus Doku denn verstanden? Ich meine du erstellst dort ja explizit den Knoten 'usuario' mit Doc.CreateElement('usuario')...

Wenn du den nicht brauchst, warum erstellst du ihn dann statt des Knotens, den du möchtest?


Na ja, das ist ja das gerade, hätte ich den Code verstanden, dann hätte ich das Thema nicht erstellt. Gibt es vielleicht noch irgendwelche Dokus für XML mit Lazarus oder Delphi?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.10.20 18:42 
Es ist halt recht schwierig etwas dazu zu sagen, wenn du nicht schreibst was du daran nicht verstehst. Denn die Befehle sind eigentlich selbsterklärend, wenn man sie Wort für Wort anschaut...

CreateElement - create element - Erzeuge ein neues Element mit dem angegebenen Namen
AppendChild - append child - Hänge an der Stelle des Aufrufs (Doc.AppendChild --> im Dokument direkt, RootNode.AppendChild --> unter dem Knoten RootNode, ...) ein Element darunter
CreateTextNode - create text node - Erzeuge einen neuen Knoten als reinen Textknoten, sprich nur Textinhalt ohne den Namen eines Knotens
DocumentElement - document element - Das ist der oberste Knoten, hier also register