AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Hilfe beim ersten XML Versuch!
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe beim ersten XML Versuch!

Offene Frage von "Novo"
Ein Thema von Novo · begonnen am 13. Feb 2010 · letzter Beitrag vom 25. Feb 2010
Antwort Antwort
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#1

Hilfe beim ersten XML Versuch!

  Alt 13. Feb 2010, 01:25
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:
http://www.delphipraxis.net/internal...t.php?t=168824

und zwar benutze ich die Delphi eigene TXMLDocument Komponente.
Auslesen möchte ich eine API XML:

Vereinfacht:
Code:
<words>
  <word>
    <navi id="850">'ampi</navi>
    <syllabic/>
    <wordclass id="1">1</wordclass>
    <ipa>&#660;am.pi</ipa>
    <lastmodified>20100128181420</lastmodified>
    <translations id="11">
      <translate>Berührung, die</translate>
    </translations>
  </word>
  <word>
    ...
  </word>
 ...
<words>
Das herunterladen klappt, nun gehts ans auslesen:
Code:
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;
Leider bekomme ich eine Zugriffsverletzung
Wenn ich den StartItemNode z.B. in "navi" ändere, dann wird zwischendrin 1 Wort ausgelesen, aber
das soll ja nicht der Startwert sein.

Was hab ich da falsch?
Habe mir beispiele angeschaut, die sind so wie in meinem Code!


EDIT:
WTF es ist
2.30Uhr und ich und wie ein Wahnsinniger.


Mfg Novo
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Hilfe beim ersten XML Versuch!

  Alt 13. Feb 2010, 03:26
Du bist nicht allein, glaub an dich, du schaffst das...
*Nickweg
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Hilfe beim ersten XML Versuch!

  Alt 13. Feb 2010, 06:34
Guten Morgen,

sollen wir erraten wo denn die Exception geworfen wird? Ich glaube aber den Fehler gefunden zu haben:

Code:
StartItemNode := XMLDoc.DocumentElement
                       .ChildNodes       // <words></words>
                       .First            // <word></word>
                       .ChildNodes       // <navi> bis zu >translation>
                       .FindNode('word'); // <word> GIBTS NICHT! -> Fehlende Prüfung auf NIL
Warum hast du eigentlich diese Zuweisung? Wohl zu viel RAM übrig?
Delphi-Quellcode:
StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('word');
ANode := StartItemNode;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Hilfe beim ersten XML Versuch!

  Alt 13. Feb 2010, 19:38
Zitat von s.h.a.r.k:
Guten Morgen,

sollen wir erraten wo denn die Exception geworfen wird? Ich glaube aber den Fehler gefunden zu haben:

Code:
StartItemNode := XMLDoc.DocumentElement
                       .ChildNodes       // <words></words>
                       .First            // <word></word>
                       .ChildNodes       // <navi> bis zu >translation>
                       .FindNode('word'); // <word> GIBTS NICHT! -> Fehlende Prüfung auf NIL
Warum hast du eigentlich diese Zuweisung? Wohl zu viel RAM übrig?
Delphi-Quellcode:
StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('word');
ANode := StartItemNode;
Hey
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:
http://delphi.about.com/od/interneti...rss_read_3.htm

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 ...
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

Re: Hilfe beim ersten XML Versuch!

  Alt 13. Feb 2010, 20:18
Zitat von Novo:
EDIT:
Und dann seh ich noch ein problem auf mich zukommen:
http://www.delphipraxis.net/internal...&highlight=xml
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Hilfe beim ersten XML Versuch!

  Alt 23. Feb 2010, 09:26
mööh klappt alles iwie nicht
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Hilfe beim ersten XML Versuch!

  Alt 23. Feb 2010, 10:03
Das XML ist nicht gültig. Die HTML Sonderzeichen gehören in den Knoten kodiert.

Zitat:
'ampi
Da gehört das ' enkodiert.

http://en.wikipedia.org/wiki/List_of...ntities_in_XML
http://xml.silmaril.ie/authors/specials/
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Hilfe beim ersten XML Versuch!

  Alt 25. Feb 2010, 15:02
Zitat von generic:
Das XML ist nicht gültig. Die HTML Sonderzeichen gehören in den Knoten kodiert.

Zitat:
'ampi
Da gehört das ' enkodiert.

http://en.wikipedia.org/wiki/List_of...ntities_in_XML
http://xml.silmaril.ie/authors/specials/
versteh ich nicht.
das ist doch der string, der ausgelesen werden soll ...
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz