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]