Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Wie eine Sub Sub Node erstellen (https://www.delphipraxis.net/160934-wie-eine-sub-sub-node-erstellen.html)

BBoy 8. Jun 2011 15:42

Wie eine Sub Sub Node erstellen
 
Ich nutze NativeXML und möchte innerhalb einer subnode noch eine subnode erstellen. Weis aber nicht wie.
So soll das mal aussehen:
Code:
<gpx>
 <name>Petersen</name>
 <vorname>Peter</vorname>
 <wpt>
   <kind1>Jan</kind1>
   <kind2>Florian</kind2>
   <neuessub>
     <daten1>Test</daten1>
     <daten2>Test</daten2>
   </neuessub>
 </wpt>
</gpx>
Es geht um die <neuessub> node. Die bekomme ich nicht hin.

Hier mein Code:
Delphi-Quellcode:
 XMLDoc := TNativeXML.CreateName('gpx');
  xmlDoc.Root.AttributeAdd('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
  xmlDoc.Root.AttributeAdd('xmlns:xsd','http://www.w3.org/2001/XMLSchema');
  xmlDoc.Root.AttributeAdd('version','1.0');
  xmlDoc.Root.AttributeAdd('creator','GCT');
  xmlDoc.Root.AttributeAdd('xsi:schemaLocation','Test');
  xmlDoc.Root.AttributeAdd('xmlns','http://www.topografix.com/GPX/1/0');

  xmlDoc.Root.NodeNew('name').Value := 'Planer';
  xmlDoc.Root.NodeNew('desc').Value := 'Planer';
  xmlDoc.Root.NodeNew('author').Value := 'GC';
  xmlDoc.Root.NodeNew('email').Value := 'temp@aol.de';

  datamodule1.TourTable1.First;
    for i := 1 to datamodule1.TourTable1.RecordCount do begin
      with xmlDoc.Root.NodeNew('wpt') do begin
        WriteAttributeString('lat',datamodule1.TourTable1CacheLat.AsString);
        WriteAttributeString('lon',datamodule1.TourTable1CacheLon.AsString);
        WriteString('time', datamodule1.TourTable1CacheTime.AsString);
        WriteString('name', datamodule1.TourTable1CacheName.AsString);
        WriteString('desc', datamodule1.TourTable1CacheDesc.AsString);
        WriteString('url', datamodule1.TourTable1CacheUrl.AsString);
        WriteString('urlname', datamodule1.TourTable1CacheUrln.AsString);
        WriteString('sym', datamodule1.TourTable1CacheSym.AsString);
        WriteString('type', datamodule1.TourTable1CacheType.AsString);

// hier sollte die Sub SubNode eingefügt werden !!!!

        datamodule1.TourTable1.Next;
      end;
    end;
  xmlDoc.XmlFormat := xfReadable;
  XMLDoc.SaveToFile('test.gpx');
Kann mir bitte jemand erkläre wie ich da eine weiter subnode hinbekomme? Danke!!

s.h.a.r.k 8. Jun 2011 15:43

AW: Wie eine Sub Sub Node erstellen
 
Gibts da nicht eine Funktion AddChild()? Diese sollte dir eine Referenz auf den neuen Node liefern und dann kannst du darauf ja wieder AddChild() anwenden etc.

BBoy 8. Jun 2011 15:51

AW: Wie eine Sub Sub Node erstellen
 
Über AddChild finde ich nichts bei NativexML

s.h.a.r.k 8. Jun 2011 16:01

AW: Wie eine Sub Sub Node erstellen
 
Habe gerade mal in die Doku geschaut und bin über NodeNew gestoßen:
Zitat:

NativeXml Help

Content | Index | Reference
TXmlNode.NodeNew
TXmlNode

function NodeNew(const AName: Utf8String): TXmlNode; virtual;

Description
Create a new node with AName, add it to the subnode list, and return a pointer to it.
Ist quasi das gleiche wie AddChild, nur eben mit anderen Namen ;)

martin_ 8. Jun 2011 16:06

AW: Wie eine Sub Sub Node erstellen
 
zb liefert dir :
Delphi-Quellcode:
xmlDoc.Root.NodeNew('wpt')
als Ergebnis wieder einen TXMLNode.
Dh.
Delphi-Quellcode:
var
ChildNode, SubChild : TXMLNode;
begin
ChildNode := xmlDoc.Root.NodeNew('wpt');
SubChild := ChildNode.NodeNew('xxx');
aber da gibt es sicher noch andere Lösungen...

BBoy 8. Jun 2011 16:19

AW: Wie eine Sub Sub Node erstellen
 
Vielen Dank! Habe es verstanden und funktioniert prima :)


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