[C#] Inlezen opgehaald XML-document geeft probs

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:11
Ik heb net een C# progje geschreven dat een XML-bestand met beurskoersen gaat gaan afhalen van het internet.
De code om het bestand af te halen, ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HttpWebRequest webreq = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
        
StreamReader sr = new StreamReader(webresp.GetResponseStream(), 
                                Encoding.ASCII);
StreamWriter sw = new StreamWriter(".\\quotes.xml", false); 
        
// Schrijf de opgehaalde waarden
string str;
while ((str = sr.ReadLine()) != null)
{
    sw.WriteLine(str);
}
        
sr.Close();
sw.Close();

Dit lukt, het bestand wordt ingelezen in m'n stream object en ik schrijf dit dan weg als "quotes.xml". Tot zover geen probleem.

Als ik nu echter op een later moment in m'n programma het XML bestand wil inlezen in een XmlDocument object, krijg ik een fout:
There is invalid data at the root level, line 1, position 1
Nochtans, mijn XML bestand ziet er goed uit:
(Ik kan het ook zonder problemen in IE openen)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<stock_quotes>
<stock_quote>
 <symbol>AUTN</symbol>
 <when>
   <date>4/18/2002</date>
   <time>9:30am</time>
 </when>
 <price type="ask" value="4.92"/>
 <price type="open"    value="4.92"/>
 <price type="dayhigh" value="4.92"/>
 <price type="daylow"  value="4.92"/>
 <change>-0.08</change>
 <volume>200</volume>
</stock_quote>
</stock_quotes>

De code om het bestand in te lezen in m'n XmlDocument object ziet er volgens mij ook goed uit:
code:
1
2
3
XmlDocument quotes;
quotes = new XmlDocument();
quotes.LoadXml(".\\quotes.xml");

Als ik een ander XML-bestand inlees (een dat ik zelf gemaakt heb), dan krijg ik dat probleem niet. Het zal dus toch wel aan dat XML-document liggen maar ik zie er geen 'rare karakters' ofzo inzitten.
Misschien ligt het aan mijn manier van inlezen ofzo, ik weet het niet.

Iemand die meer ervaring heeft met dit soort dingen en die het probleem ziet?

https://fgheysels.github.io/


Verwijderd

moet er in de XML tag geen encoding attribute staan?

en als je deze tekst copy/paste naar een nieuw bestand, en die dan opent :?

waarom gebruik je bij de StreamReader ASCII encoding, en niet unicode?

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:11
Op donderdag 18 april 2002 16:12 schreef KoenM het volgende:
moet er in de XML tag geen encoding attribute staan?
Ik dacht dat dat niet verplicht was. Wat zou er dan in die encoding moeten staan ?
en als je deze tekst copy/paste naar een nieuw bestand, en die dan opent :?
Geen 'avance'. Probleem blijft.
waarom gebruik je bij de StreamReader ASCII encoding, en niet unicode?
Omdat unicode niet de gewenste karakters geeft... chinese tekens enzo...

https://fgheysels.github.io/


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 07:26
Als je in VS.NET werkt kun je proberen de fout met een stacktrace af te vangen om een fatsoenlijk melding te krijgen. Ik kreeg dergelijke meldingen toen een andere prog knuppel het nodig vond MESSAGEBEGIN en MESSAGEEND toe te voegen in de voer string.

succes ;)

ps: plaats eens een schoon xml in dat bestand en kijk eens of ie het dan wel naar behoren doet (misshien een fout char aan het begin van de string?)

Verwijderd

En als je op dezelfde plaats in de code een willekeurig ander XML document opent gaat het wel goed?

Maak anders eens een nieuwe leeg .xml bestand aan en tik het bestaande bestand over (dus géén cop-paste). Mischien helpt dat :? Probeer anders die encoding er toch eens in te zetten? Het lijkt me ook sterk dat dat het probleem is, maar je weet het nooit :)

Wazig probleem!

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:11
Op donderdag 18 april 2002 16:24 schreef paulgielens het volgende:
Als je in VS.NET werkt kun je proberen de fout met een stacktrace af te vangen om een fatsoenlijk melding te krijgen. Ik kreeg dergelijke meldingen toen een andere prog knuppel het nodig vond MESSAGEBEGIN en MESSAGEEND toe te voegen in de voer string.

succes ;)
'k werk jammer genoeg niet met VS.NET...
ps: plaats eens een schoon xml in dat bestand en kijk eens of ie het dan wel naar behoren doet (misshien een fout char aan het begin van de string?)
'k heb het al eens met een ander (zelfgemaakt) xml bestand geprobeerd, en toen lukte het. Maar ik zie toch niet direct iets fout aan dat XML-bestand dat ik van het Net heb afgehaald. Trouwens, ik kan het zonder problemen in Internet Explorer openen.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:11
Doorbraak...

Het ligt niet aan m'n XML document. Ik heb het daarnet nog eens geprobeerd met een ander XML document, en ik kreeg dezelfde fout. Zeer vreemd, want ik dacht echt dat ik het al eens geprobeerd had met een andere file en het toen wel werktte...
Ik heb m'n XML bestand dan maar eens ingelezen in een XmlTextReader en toen werkte het blijkbaar wel.

Ik heb toen in de help nog eens naar die LoadXml functie gekeken en er staat daar een voorbeeldje in, waar die LoadXML functie geen pad naar een xml-bestand als parameter heeft, maar een volledige xml-string.

Verder vind ik niet direct een functie om een XmlDocument in te laden door gewoon de file op te geven.

https://fgheysels.github.io/

Pagina: 1