Frage

Ich versuche das XML -Dokument zu analysieren, von dem er zurückgegeben wurde dieser Link Aber ich bekomme eine Ausnahme vom Typ ComException Mit der folgenden Nachricht:

Error HRESULT E_FAIL has been returned from a call to a COM component.

Hier ist der Code:

        try
        {
            //...
            string EPGXML = await DownloadAsync(url);

            var xmldoc = new XmlDocument();
            xmldoc.LoadXml(EPGXML); //this line throws the exception
            //...rest of the code
        }
        catch (Exception)
        {
            //I get here...
        }

Könnten Sie mir bitte helfen, warum ich diese Nachricht bekomme und wie kann ich das beheben? Vielen Dank.

BEARBEITEN:

Ich lese die Quelle der XML mit dieser Funktion (vielleicht irre ich mich hier und ich sollte etwas tun, um die Zeichenfolge in UTF-8 zu erhalten, da ich die deutschen Zeichen im String im Debug-Modus nicht sehe Fenster):

    private async static Task<string> DownloadPageAsync(string url)
    {
        try
        {
            HttpClientHandler handler = new HttpClientHandler();
            handler.UseDefaultCredentials = true;
            handler.AllowAutoRedirect = true;
            handler.UseCookies = true;
            HttpClient client = new HttpClient(handler);
            client.MaxResponseContentBufferSize = 10000000;
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();

            string responseBody = response.Content.ReadAsString();
            return responseBody;
        }
        catch (Exception ex)
        {
            return "error" + ex.Message;
        }
    }
War es hilfreich?

Lösung

Das von Ihnen bereitgestellte XML ist nicht gültig, zumindest sagt Firefox:

Erreur d'Alalyze XML: MAL Formé Emplacement: http://www.onlinetvRecorder.com/?aktion=epg_export&format=xml&btn_ok=ok&&> Stationen = 3SAT, Anixe, ARD & von = 30.11.2011 & TO = 30.11.2011 Numéro de Ligne 218, Colonne 193:

(Entschuldigung für die Franzosen)

Es sieht ein bisschen näher aus und sieht so aus, als würde der Parser das Wort "Plötzlich" auf dem Charakter "Ö" bricht.

Sie sollten CDATA verwenden, um dies zu verhindern:

<![CDATA[Your text here can contain special chars]]>

Andere Tipps

Versuchen Sie nicht, ein XML -Dokument mit einer HTML -Seite zu laden. Verwenden HTML Agility Pack das sollte dies tun.

BEARBEITEN: Wenn Sie nur die Quelle der Seite als Zeichenfolge wünschen, sollte dies den Trick machen.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/posts/8331002");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string data = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    data = reader.ReadToEnd();

Console.WriteLine(data);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top