![]() |
Hilfe beim ersten XML Versuch!
Hallo,
dies ist mein erster XML Versuch, und ich habe es zumindest schonmal ansatzweise geschafft, das zumindest ETWAS angezeigt wird xD. Anscheinend selbes Problem wie: ![]() und zwar benutze ich die Delphi eigene TXMLDocument Komponente. Auslesen möchte ich eine API XML: Vereinfacht:
Code:
Das herunterladen klappt, nun gehts ans auslesen:
<words>
<word> <navi id="850">'ampi</navi> <syllabic/> <wordclass id="1">1</wordclass> <ipa>ʔam.pi</ipa> <lastmodified>20100128181420</lastmodified> <translations id="11"> <translate>Berührung, die</translate> </translations> </word> <word> ... </word> ... <words>
Code:
Leider bekomme ich eine Zugriffsverletzung :(
procedure btnClick(Sender: TObject);
var ADPLocalFile : TFileName; StartItemNode : IXMLNode; ANode : IXMLNode; s1, s2, s3 : widestring; begin ADPLocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.xml'; try XMLDoc.FileName := ADPLocalFile; XMLDoc.Active:=True; StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('word'); ANode := StartItemNode; repeat s1 := ANode.ChildNodes['navi'].Text; s2 := ANode.ChildNodes['ipa'].Text; s3 := ANode.ChildNodes['translate'].Text; with LV.Items.Add do begin Caption := s1; SubItems.Add(s2); SubItems.Add(s3) end; ANode := ANode.NextSibling; until ANode = nil; finally DeleteFile(ADPLocalFile); end; end; Wenn ich den StartItemNode z.B. in "navi" ändere, dann wird zwischendrin 1 Wort ausgelesen, aber das soll ja nicht der Startwert sein. :wiejetzt: Was hab ich da falsch? Habe mir beispiele angeschaut, die sind so wie in meinem Code! EDIT: WTF es ist 2.30Uhr und ich :cheers: und :coder: wie ein Wahnsinniger. Mfg Novo |
Re: Hilfe beim ersten XML Versuch!
Du bist nicht allein, glaub an dich, du schaffst das...
*Nickweg |
Re: Hilfe beim ersten XML Versuch!
Guten Morgen,
sollen wir erraten wo denn die Exception geworfen wird? Ich glaube aber den Fehler gefunden zu haben:
Code:
Warum hast du eigentlich diese Zuweisung? :gruebel: Wohl zu viel RAM übrig? :zwinker:
StartItemNode := XMLDoc.DocumentElement
.ChildNodes // <words></words> .First // <word></word> .ChildNodes // <navi> bis zu >translation> .FindNode('word'); // <word> GIBTS NICHT! -> Fehlende Prüfung auf NIL
Delphi-Quellcode:
StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('word');
ANode := StartItemNode; |
Re: Hilfe beim ersten XML Versuch!
Zitat:
Die Exception wird geworfen, wenn .FindNode('word'); ist und das an dieser stelle: s1 := ANode.ChildNodes['navi'].Text; Warum sollte es word nicht geben? Schau mal in meinem XML Beispiel oben! gibt es nicht so: for each <word> in <words> do <word>.<navi> und <word>.ipa usw.? PS: Meinen bisherigen Code habe ich mir hier abgeschaut: ![]() Und wiso zuviel ram übrig xD? EDIT: Und dann seh ich noch ein problem auf mich zukommen:
Code:
<translations id="xxx">
<translate>1 (Oktal)</translate> <translate>eins</translate> <translate>xxx</translate> </translations> sind mal 1 mal 2 mal 3 translations ... |
Re: Hilfe beim ersten XML Versuch!
Zitat:
![]() |
Re: Hilfe beim ersten XML Versuch!
mööh klappt alles iwie nicht :(
|
Re: Hilfe beim ersten XML Versuch!
Das XML ist nicht gültig. Die HTML Sonderzeichen gehören in den Knoten kodiert.
Zitat:
![]() ![]() |
Re: Hilfe beim ersten XML Versuch!
Zitat:
das ist doch der string, der ausgelesen werden soll ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 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