Forums Neueste Beiträge
 

Timout bei LoadXml

19/03/2011 - 11:43 von Joachim Pimiskern | Report spam
Guten Morgen,

beim Laden von RSS-Feeds stieß ich auf ungültige XML-Dokumente,
die irgendwo ein "<html..." enthalten. Wenn ich die mit LoadXml
zu Laden versuche, vergehen bis zu 120s, obwohl der String bloß
ein paar kB lang ist. Woran kann das liegen? xml ist hier vom
Typ XmlDocument.




public bool LoadFromString(string text)
{
if (text.Contains("<html"))
text = text; // Haltepunkt

int ti = Environment.TickCount;


try
{
xml.LoadXml(text);
}
catch (Exception e)
{
ti = Environment.TickCount - ti;
return false;
}

ti = Environment.TickCount - ti;

...
}


Die Exception lautet in solchen Fàllen z.B.

"Beim Analysieren von 'EntityName' ist ein Fehler aufgetreten. Zeile
154, Position 2353."

Kann man irgendwie einen Timeout festlegen? Eigentlich
sollte das Parsen von XML ruckzuck gehen.


VS2005 Standard.

Grüße,
Joachim
 

Lesen sie die antworten

#1 Joachim Pimiskern
19/03/2011 - 19:10 | Warnen spam
Am 19.03.2011 11:43, schrieb Joachim Pimiskern:
[...]




Also, das Problem konnte ich eingrenzen.
text ist ein String mit einem Inhalt, der kein
XML-Dokument darstellt. Oder doch? Ist ja egal.

Das Mysteriöse ist, daß LoadXml 30 Sekunden braucht, bis
die Exception geworfen wird.


string text = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01
Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html></html>";


int ti = Environment.TickCount;


try
{
xml.LoadXml(text);
}
catch (Exception e)
{
ti = Environment.TickCount - ti;
return false;
}

ti = Environment.TickCount - ti;

Grüße,
Joachim

Ähnliche fragen