AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi [erledigt] Knoten inmitten einer Datei duplizieren
Thema durchsuchen
Ansicht
Themen-Optionen

[erledigt] Knoten inmitten einer Datei duplizieren

Ein Thema von com3t · begonnen am 22. Sep 2005 · letzter Beitrag vom 23. Sep 2005
 
com3t

Registriert seit: 22. Sep 2005
Ort: Kitzbühel
1 Beiträge
 
#1

[erledigt] Knoten inmitten einer Datei duplizieren

  Alt 22. Sep 2005, 13:14
Hallo erstmal!

Habe folgendes Problem:

Delphi-Quellcode:

  appPath := ExtractFilePath( Application.ExeName );
  xmlDoc.LoadFromFile( appPath + 'template.xml' );
  xmlDoc.Active := true;
  header := xmlDoc.DocumentElement.ChildNodes['OrderHeader'];
  parts := xmlDoc.DocumentElement.ChildNodes['OrderDetail'].ChildNodes['ListOfItemDetail'];

  // Hier sollten beliebig viele Parts entstehen

  memoxmldata.Text := xmlDoc.XML.GetText;
Das ist mein Code, welcher folgende xml-Datei bearbeitet:

Delphi-Quellcode:

<Order>
  <OrderHeader>
     <bla>123</bla>
     <bla2>456</bla2>
  </OrderHeader>
  <OrderDetail>
    <ListOfItemDetail>
      <ItemDetail>
        <Part>1</Part>
        <Desc>Erstes Teil</Desc>
      </ItemDetail>
    <ListOfItemDetail>
  </OrderDetail>
</Order>
Nun, sollte es aber unterschiedlich viele ItemDetail Knoten geben, wie kann ich das bewerkstelligen ??

Sollte dann so aussehen( mit 2 solchen Knoten ), die entgültige Datei:

Delphi-Quellcode:
<Order>
  <OrderHeader>
     <bla>123</bla>
     <bla2>456</bla2>
  </OrderHeader>
  <OrderDetail>
    <ListOfItemDetail>
      <ItemDetail>
        <Part>1</Part>
        <Desc>Erstes Teil</Desc>
      </ItemDetail>
      <ItemDetail>
        <Part>2</Part>
        <Desc>Zweites Teil</Desc>
      </ItemDetail>
    <ListOfItemDetail>
  </OrderDetail>
</Order>
Vielen Dank für jegliche Hilfe

[edit]

Konnte es folgendermassen lösen:

Delphi-Quellcode:
appPath := ExtractFilePath( Application.ExeName );
  xmlDoc.LoadFromFile( appPath + 'template.xml' );
  xmlDoc.Active := true;
  header := xmlDoc.DocumentElement.ChildNodes['OrderHeader'];
  parts := xmlDoc.DocumentElement.ChildNodes['OrderDetail'].ChildNodes['ListOfItemDetail'].ChildNodes['ItemDetail'];

  { Hier entstehen beliebig viele Parts bzw. zur Zeit nur 2
    Sollte dann in eine Schleife rein, das Ganze, wobei das erste Element zuvor gefüllt werden sollte }


  tmpNode := parts.CloneNode( true );
  tmpNode.ChildNodes['Part'].Text := '2';
  xmlDoc.DocumentElement.ChildNodes['OrderDetail'].ChildNodes['ListOfItemDetail'].ChildNodes.Add( tmpNode );

  memoxmldata.Text := xmlDoc.XML.GetText;
[/edit]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz