Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Knoten an bestimmter Stelle? (https://www.delphipraxis.net/206307-knoten-bestimmter-stelle.html)

LPascal 8. Dez 2020 14:11

Delphi-Version: 7

Knoten an bestimmter Stelle?
 
Hallo zusammen,

ich bräuchte eure Hilfe liebe Kollegen, ich füge wie folgt einen <Personen>-Knoten in eine XML ein. Nur wird dieser immer als letzter Kind-Knoten von <Arten>-Knoten eingefügt. Dann sieht es bei mir so aus:

Zitat:

<Arten>
<Maschinen>...</Maschinen>
<Personen>...</Personen>
<XY>...</XY>
<Personen>...</Personen> // <--- neu angelegt
</Arten>
Und das ist nicht gut, ich muss die neue Person vor <XY> oder nach <Maschinen> anlegen. Wie geht das? Ich verwende die DOM-Bibliothek.
Vielen Dank Euch!

Delphi-Quellcode:
      // Element anlegen
      ElementNode := Doc.CreateElement('Personen');

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

      ItemNode := Doc.CreateElement('Nachname');
      TextNode := Doc.CreateTextNode('Schmidt');
      ItemNode.AppendChild(TextNode);
      ElementNode.AppendChild(ItemNode);

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

Klaus01 8. Dez 2020 14:27

AW: Knoten an bestimmter Stelle?
 
.. warum ist es so wichtig, den Node vor XY einzufügren?
Grüße
Klaus

LPascal 8. Dez 2020 14:40

AW: Knoten an bestimmter Stelle?
 
Zitat:

Zitat von Klaus01 (Beitrag 1478751)
.. warum ist es so wichtig, den Node vor XY einzufügren?
Grüße
Klaus

Die XML wird weitergegeben und mit einer anderen Software eingelesen. Diese liest die Personen bis <XY> ein und bricht ab, da sie keine weiteren Personen mehr vermutet. Und so werden etliche Personen weggelassen. Wenn ich aber meine Personen vor <XY> einfüge - liest das andere Programm alle ein.

Klaus01 8. Dez 2020 16:37

AW: Knoten an bestimmter Stelle?
 
.. lösche den XY Eintrag, füge Deine Personen ein und füge den XY Eintrag wieder ein.

.. oder habe ich das bisher falsch verstanden.
<Personen> ist eine "liste"
Zischen <Personen> und </Personen>
stehen mehrere Einträge, quasi <Person> </Person>
.. dann müsstest Du Deinen neuen Knoten hier hinhängen:
Delphi-Quellcode:
DatenNode := Doc.DocumentElement.FindNode('Header').FindNode('Arten').FindNode('Personen');
vielleicht hast Du ja mal ein kleines Beispiel xml?
Grüße
Klaus

LPascal 8. Dez 2020 16:40

AW: Knoten an bestimmter Stelle?
 
Hab's gemacht. :thumb:

Delphi-Quellcode:
      DatenNode := Doc.DocumentElement.FindNode('Header').FindNode('Arten');
      y := Doc.GetElementsByTagName('Personen')[0];
      DatenNode.InsertBefore(ElementNode, y);


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 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