![]() |
JvSimpleXml Nodes löschen
Hallo,
hab folgendes Problem. Ich möchte das komplette erste "Node" Tag löschen.
Delphi-Quellcode:
Nun bekomm ich aber immer n leeres Tag (<Node/>), wenn ich das so mache.
<?xml version="1.0" encoding="iso-8859-1"?>
<Root> <Node> <Wert1>Test1</Wert1> <Wert2>Test2</Wert2> </Node> <Node> <Wert1>Test3</Wert1> <Wert2>Test4</Wert2> </Node> </Root>
Delphi-Quellcode:
Das kommt dabei raus:
var
i: Integer; Node: TJvSimpleXMLElem; begin for i := 0 to Xml.Root.Items.Count -1 do begin Node := Xml.Root.Items[i]; if Node.Items.ItemNamed['Wert1'].Value = 'Test1' then Node.Items.Clear; end; end;
Delphi-Quellcode:
Komm nicht drauf wie ich das leere Tag ganz loswerde, wahrscheinlich hab ich mal wieder Tomaten auf den Augen.
<?xml version="1.0" encoding="iso-8859-1"?>
<Root> <Node/> <Node> <Wert1>Test3</Wert1> <Wert2>Test4</Wert2> </Node> </Root> Hoffe ihr könnt mir helfen. Gruss Cookie! |
Re: JvSimpleXml Nodes löschen
Hallo,
Leeren ist nicht Löschen:
Delphi-Quellcode:
Grüße vom marabu
var
i: Integer; begin with SimpleXML.Root.Items do for i := Pred(Count) downto 0 do if Item[i].Items.ItemNamed['Wert1'].Value = 'Test1' then Delete(i); end; |
Re: JvSimpleXml Nodes löschen
Oh, das hätte ich auch selbst sehen können. :wall:
Vielen Dank. |
AW: JvSimpleXml Nodes löschen
hi
ich bekomme, dass hier nicht gelöscht... es ist zwar schin alles gesagt... aber irgendwie will das bei mir nicht XML:
Code:
soll so werden:
<Kunden>
<Kundennummer1> <Name>Kunde1</Name> <Strasse></Strasse> <PLZ></PLZ>
Code:
Delphicode:
<Kunden>
<Kundennummer1> <Name>Kunde1</Name> <PLZ></PLZ>
Delphi-Quellcode:
das haut leider nicht hin, kann mir da jmd helfen?
SimpleXML.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Kunden.xml');
SimpleXML.Root.Name :='Kunden'; SimpleXML.Root.Items.ItemNamed['Kundennummer1'].Items.Delete('Strasse'); |
AW: JvSimpleXml Nodes löschen
Ich habe es soeben durchgespielt und es funktioniert:
Delphi-Quellcode:
Der Unterschied im XML besteht darin, dass das leere Tag 'Strasse' bei Dir als <Strasse></Strasse> dargestellt wird, aber korrekterweise so aussieht: <Strasse />. Vllt ist das der Knackpunkt.
var
lXML : TJvSimpleXML; begin lXML := TJvSimpleXML.Create(nil); try lXML.Root.Name := 'Kunden'; with lXML.Root.Items.Add('Kundennummer1', '') do begin Items.Add('Name', 'Kunde1'); Items.Add('Strasse', ''); Items.Add('PLZ', ''); end; lXML.Root.Items.ItemNamed['Kundennummer1'].Items.Delete('Strasse'); RichEdit1.Text := lXML.XMLData; finally FreeAndNil(lXML); end; |
AW: JvSimpleXml Nodes löschen
Zitat:
Kann natürlich aber auch sein, daß die JEDI-Leute das irgndwie anders behandeln. Wobei es auch einige XML-Libs gibt, wo man das Verhalten diesbezüglich steuern kann ... könnte man z.B. mal in die Optionen/Einstellungen der jeweiligen Lib reinsehn. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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