Toon posts:

[Delphi 6] XML problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende xml file:
code:
1
2
3
4
5
6
<Session>
  <File0 State="open">apdaarga.wav</File0>
  <File1 State="open">Apdaargs.wav</File1>
  <File2 State="closed">apdabjga.wav</File2>
  <File3 State="open">Apdabjgs.wav</File3>
</Session>

Het probleem is dat het me niet lukt om deze met de standaard TXmldocument van Delphi 6 in te lezen.

Klein stukje code:
code:
1
2
3
4
5
6
7
8
9
10
var xmlDoc : TXMLDocument;
    rootNode: IXMLNOde;
begin
  xmlDoc := TXMLDOcument.Create(filename);
  xmlDoc.active := true;
  
  rootNode := xmldoc.ChildNodes[0];
  {..
   .. }
end;

Ik weet zeker dat het openen van de file op zich goed gaat.
In de xmldoc.xml zie ik gewoon de 'data' staan.

Maar bij het opvragen van de rootNode gaat het mis. Het lijkt erop dat er helemaal geen childnodes zijn. Acces violation dus..

Ik heb ook al
code:
1
rootNode := xmldoc.DocumentElement;

geprobeerd maar dan wordt rootnode gewoon nil;

iemand een idee wat ik verkeerd doe?

Verwijderd

Topicstarter
Op dit moment van de dag misschien iemand aanwezig die me kan helpen?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Ik maak ook gebruik van XML. En ik zie weinig verschil tussen jou en mijn code. Behalve dat mijn XML uitgebreider is.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
Op vrijdag 12 oktober 2001 23:28 schreef jelmervos het volgende:
Ik maak ook gebruik van XML. En ik zie weinig verschil tussen jou en mijn code. Behalve dat mijn XML uitgebreider is.
dus jij zegt dat dit gewoon zou moeten werken?

Verwijderd

Op vrijdag 12 oktober 2001 23:58 schreef dvdlei het volgende:
dus jij zegt dat dit gewoon zou moeten werken?
XML Spy en IE6 slikken jouw XML zonder problemen, maar 't is wel vrij kaal (geen schema).
Probeer 't 's met:
code:
1
2
3
4
5
6
<Session>
  <File ID="0" State="open"   Name="apdaarga.wav"/>
  <File ID="1" State="open"   Name="Apdaargs.wav"/>
  <File ID="2" State="closed" Name="apdabjga.wav"/>
  <File ID="3" State="open"   Name="Apdabjgs.wav"/>
</Session>

Ook zonder schema, maar alle File values in attributes gezet. Wie weet pikt 'ie dat wel?

/me moet toch maar 's zien dat 'ie een Enterprise van D6 krijgt...

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op zaterdag 13 oktober 2001 00:50 schreef Afterlife het volgende:

[..]

/me moet toch maar 's zien dat 'ie een Enterprise van D6 krijgt...
Zou ik zeker proberen! Wel een beetje duur ( ;) ), maar dan heb je wel wat. :P

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op vrijdag 12 oktober 2001 23:58 schreef dvdlei het volgende:

[..]

dus jij zegt dat dit gewoon zou moeten werken?
Yep, je kunt proberen je XML iets uitgebreider te maken door bijvoorbeed dit toe te voegen:
code:
1
<?xml version="1.0" encoding="ISO-8859-1"?>

Anders weet ik het ook niet.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
[b]
Yep, je kunt proberen je XML iets uitgebreider te maken door bijvoorbeed dit toe te voegen:
code:
1
<?xml version="1.0" encoding="ISO-8859-1"?>

Anders weet ik het ook niet.
Dat lijkt helaas niet te helpen.

btw. nog iets opmerkelijks..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
begin
  xmlDoc := TXMLDOcument.Create(filename);
  xmlDoc.active := true;

  rootNode := xmldoc.DocumentElement;

  if rootnode.HasChildNodes then
  begin
    for i:= 0 to rootnode.childnodes.Count -1 do
    begin
    {.. 
      ..}
    end;
  end;
end;

als ik dit doe dan is rootnode.haschildnodes true!
maar bij het opvragen van de childnodes.count is het meteen acces violation.. vaag allemaal.

ik heb intussen MSXML30 geinstalleerd en ik gebruik nu die componenten in delphi. Is wel ietsje moeilijker maar lijkt nu toch al een stuk beter te gaan.

in ieder geval bedankt voor het meedenken.

Verwijderd

Op zaterdag 13 oktober 2001 01:05 schreef jelmervos het volgende:
Zou ik zeker proberen! Wel een beetje duur ( ;) ), maar dan heb je wel wat. :P
Gaat wel lukken, maar voorlopig biedt D6 niet genoeg meerwaarde tov D5 voor m'n baas. Helaas een klein beetje m'n eigen schuld: ik heb al een functionele XML <-> DataSet library geschreven die 't prima doet.
Die werkt trouwens wel via DOM. Hoe goed gaat D6 om met SAX?
Dat is iets waar we nu tegenaanlopen: "streaming" XML. Een XML stream van meer dan 300Kb (kan oplopen tot 6Mb bij een full refresh) wil je niet eerst inlezen en dan pas verwerken...
Pagina: 1