Question

Je suis en train d'analyser le document XML retourné ce lien mais je reçois une exception de type ComException avec le message suivant:

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

Voici le 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...
        }

Pouvez-vous m'aider pourquoi je reçois ce message et comment puis-je résoudre ce problème? Merci.

EDIT:

Je lis la source du XML en utilisant cette fonction (peut-être que je me trompe et que je devrais faire quelque chose pour la chaîne en UTF-8, parce que je ne vois pas les caractères allemands dans la chaîne de débogage Mode (fenêtre montre):

    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;
        }
    }
Était-ce utile?

La solution

Le fichier XML que vous avez fourni n'est pas valide, au moins que ce que dit Firefox:

d'analyse XML Erreur: mal Formé Emplacement: http://www.onlinetvrecorder.com/?aktion=epg_export&format=xml&btn_ok=OK& > = stations 3SAT, ANIXE, ARD et de = 30.11.2011 & to = 30.11.2011 Ligne 218 de numéro, 193 Colonne:

(Désolé pour le français)

Vous cherchez un peu plus près, il semble que les pauses de l'analyseur sur le mot « Plötzlich », sur le caractère « ö ».

Vous devez utiliser CDATA pour empêcher cela:

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

Autres conseils

Ne pas essayer de charger un document XML avec une page html. Utilisez Html Agility pack qui était censé le faire.

EDIT :. Si vous voulez juste la source de la page en tant que chaîne cela devrait faire l'affaire

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top