Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi anweisung subknoten weiterschreiben (https://www.delphipraxis.net/80166-anweisung-subknoten-weiterschreiben.html)

MkA2k 3. Nov 2006 22:12


anweisung subknoten weiterschreiben
 
Hi,

Folgendes ich schreibe mir gerade ein Arbeitszeiten Verwaltungsprogramm. Ich hab mir gedacht ich baue meine XML Datei so auf
XML-Code:
<xml version="1.0"?>
<azeit>
   <monat name="oktober">
    <datum value="16.10.06" start="10:00" ende="16:15" pause="0:00">
    <datum value="17.10.06" start="10:00" ende="15:00" pause="0:00">
    <datum value="18.10.06" start="10:00" ende="16:15" pause="0:00">
    <datum value="19.10.06" start="10:00" ende="15:45" pause="0:30">
   </monat>
   <monat name="november">
    <datum value="02.11.06" start="10:00" ende="17:00" pause="0:00">
    <datum value="03.11.06" start="10:00" ende="16:00" pause="0:00">
   </monat>
</azeit>
Normalweise schreibe ich so meine Knoten


Delphi-Quellcode:
var
 monat : IXMLDOMNodelist;
 subnode: IXMLDOMNode;
 adri  : IXMLDOMNode;
begin
 if (frm_add.ed_datum.Text='') or (frm_add.ed_beginn.Text='') or (frm_add.ed_ende.Text='') then
  begin
   MessageDlg('Es wurden nicht alle Felder ausgefüllt!',
              mtError, [mbOK], 0);
   Exit;
  end;
 monat    := xmldoc.createElement('monat');
 //hier müsste ich ein angeben wie die Attribute heißen soll(monatsname)
 //bevor ich weiter zu den restlichen eingaben komme
  subnode  := xmldoc.createElement('datum');
  adri     := xmldoc.createAttribute('value');
  adri.text := frm_add.ed_datum.Text;
  monat.appendChild(subnode,adri)
Leider weiß ich nicht wie ich die anweisung gebe der dem Monats Knoten noch eine Attribute hingeschrieben wird bzw. das ich angebe das Unter dem Knoten Monat "Oktober" weitergeschrieben wird

Kann mir bitte jemand helfen?

Danke

MkA2k

Neuromancer 4. Nov 2006 12:24

Re: anweisung subknoten weiterschreiben
 
Hallo,

normalerweise setzst du die Attribute mit "setAttribute". Diesen Vorgang kannst du beliebig oft für einen Knoten wiederholen.

Gruß

PS:
Der Aufruf sieht dann so aus:
Delphi-Quellcode:
aMonatNode := aXMLDoc.createElement('monat');
aDatumNode := aXMLDoc.createElement('datum');
aDatumNode.setAttribute('Attribut_1', 'Wert von Attribut_1');
aDatumNode.setAttribute('Attribut_2', 'Wert von Attribut_2');
aDatumNode.setAttribute('Attribut_3', 'Wert von Attribut_3');

aMonatNode.appendChild(aDatumNode);

aXMLDoc.documentElement.appendChild(aMonatNode);
Gruß

Achja, und noch was:
Du erzeugst neue Knoten mit "createElement". Habe ich lange Zeit auch so gemacht. Mit wachsender Praxis und Erfahrung allerdings hat sich gezeigt, dass es besser ist, Knoten mit "createNode" zu erzeugen. Spätestens wenn Namespaces ins Spiel kommen, lohnt sich die Vorgehensweise, wenn auch geringfügig mehr Tipparbeit vonnöten ist...


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