Probleme mit TXMLDocument
-
Hallo Leute,
habe folgendes Problem:
Habe éine xml-Datei mit TXMLDocument geladen und die Daten Daraus in eine TListView eingetragen. Das funktioniert auch alles prima!
Aber mein Problem ist, dass die Anzahl der Unterknoten im Hauptknoten nicht richtig angezeigt wird mit Hauptknoten->ChildNodes->Count, wenn ich einen neuen Unterknoten im Hauptknoten erstelle. Wenn ich keínen Unterknoten erstelle, ist der Wert richtig wenn ich die Datei lade.Oder wenn ich einen Unterknoten erstelle, muss ich die Datei speichern und wieder laden, dann geht Count wieder bis ich einen neuen Unterknoten erstelle.
Wisst ihr warum das nicht geht ohne abspeichern? Ich bin verzweifelt....
Hauptknoten->ChildNodes->Count; // <<---hier ist der wert richtig: 2 Unterknoten Hauptknoten->AddChild(L"Unterknoten_1"); //<<<---- füge nur ein Unterknoten hinzu Hauptknoten->ChildNodes->Count; // <--- Hier ist der Wert falsch: 5 Unterknoten !???Ich habe auch schon versucht irgendwas in TXMLDocument->Options zu ändern aber ohne Erfolg...
-
Also ich habe dein Beispiel nachgestellt und bei mir wird es richtig angezeigt.
habe eine xml Datei mit 2 childnodes erstellt.<TEST> <child1></child1> <child2></child2> </TEST>nun lade ich die Datei (mach ich gleich in der Komponente, auch active) und füge noch ein Child hinzu.
void __fastcall TForm1::Button1Click(TObject *Sender) { _di_IXMLNode Hauptknoten = XMLDocument1->DocumentElement; ShowMessage(Hauptknoten->ChildNodes->Count); Hauptknoten->AddChild(L"Unterknoten_1"); ShowMessage(Hauptknoten->ChildNodes->Count); ShowMessage(XMLDocument1->XML->Text); }und alles ich richtig. 1.Message = 2, 2.Message = 3, 3.Message zeigt mir die gesamte Datei.
-
<?xml version="1.0" encoding="UTF-8"?> <!--Dies ist eine mit MovieDatabase erstellte Datenbank-Datei. Bitte nicht manuell ändern!--> <MovieData> <Settings> <Version>3.1</Version> <Description>Test</Description> <Creation-Date>20.03.2007</Creation-Date> </Settings> <GroupList> <ID_1> <Title>Zurück in die Zukunft Trilogie</Title> <Type>1</Type> </ID_1> </GroupList> <MovieEntries> <ID_7450> <Title>40 Tage & 40 Nächte</Title> <OriginalTitle>40 Days & 40 Nights</OriginalTitle> <Genre>Komödie</Genre> <Label>Universal</Label> <Source>Deutschland</Source> <ArchiveNr>0</ArchiveNr> <Country>USA</Country> <Producer></Producer> <Written></Written> <Director>Michael Lehmann</Director> <Composer></Composer> <Comment></Comment> <Features>Musik-Video: Jennifer Lopez ft. Jadakiss & Styles - Jenny from the block</Features> <Actors>Josh Hartnett,Shannyn Sossamon,Vinessa Shaw,Paulo Constanzo</Actors> <Content>Matt (Josh Hartnett) wechselt seine Freundinnen wie seine Hemden, d.h. sie sind für ihn meist nur Bettgespielinnen, da es jede Menge von ihnen gibt. Als seine Freundin ihm eiskalt den Laufpaß gibt, legt er das Gelöbnis ab, 40 Tage und Nächte zölibatär zu leben, kein Sex, keine Masturbation, nicht einmal ein Kuß. Seine Freunde machen die Aktion per Internet groß auf, so daß man Wetten abschließen kann, an welchem Tag Matt schwach wird. Doch der Leichtlebige bleibt eisern trotz mancher Versuchung. Doch dann lernt er sein Traummädchen kennen...und darf es nicht mal küssen...</Content> <Medium>3</Medium> <Length>91</Length> <Rating>3</Rating> <Disks>1</Disks> <Year>2002</Year> <Properties>0</Properties> <Chapters>0</Chapters> <Kosts>0</Kosts> <MediumType>0</MediumType> <RC>0</RC> <TVSystem>1</TVSystem> <Quality>3</Quality> <RecPlayMode>0</RecPlayMode> <Package>0</Package> <PictureFormat>0</PictureFormat> <Edition>0</Edition> <Rate>2</Rate> <RecPlayMode>0</RecPlayMode> <Codec>3</Codec> <LimitedNr>0/0</LimitedNr> <EntryCreatedUnixTime>1098316800</EntryCreatedUnixTime> <CinemaStart>-2209161600</CinemaStart> <LastUpdate>1098316800</LastUpdate> <DVDType>0</DVDType> <Group_ID>0</Group_ID> <Cover_Back></Cover_Back> <Cover_Disk></Cover_Disk> <Cover_Front>7450_front.jpg</Cover_Front> <URL/> <SubTitles/> <Audio/> <Lending> <Date>-2209161600</Date> <Name></Name> </Lending> </ID_7450> </MovieEntries> </MovieData>Das ist die XML Datei, die nicht geht.... ist da irgendwas falsch???... denn im Knoten 'MovieEntries' funktioniert wie oben beschrieben das Hinzufügen von Einträgen nicht richtig...
Wäre nett wenn das jemand testen könnte...
-
interessanter wäre wie Du sie einliest und welchen DomVentor Du benutzt. Wenn die xml-Datei falsch wäre, müßte ja beim parsen ein Fehler auftreten, sobald Du das Ducument auf active setzt.
-
Habe das Problem gelöst!
Ich habe alles ausprobiert und der Fehler lag an der Formatierung! Ich hatte nach dem Laden der xml-Datei immer
XML->Options = XML->Options << doNodeAutoIndent;gesetzt. Das funktioniert irgendwie nicht richtig ( oder ich mache irgendwas falsch...). Habe es gelöscht und seitdem geht das mit Count aber ohne Formatierung (macht aber nix...)

Danke an alle für die Hilfe....