Pregunta

Estoy tratando de analizar el documento XML devuelto del este enlace Pero obtengo una excepción de tipo ComException Con el siguiente mensaje:

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

Aquí está el código:

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

¿Podría ayudarme por qué recibo este mensaje y cómo puedo solucionar esto? Gracias.

EDITAR:

Estoy leyendo la fuente del XML usando esta función (tal vez me equivoque aquí y debería hacer algo para obtener la cadena en UTF-8, porque no veo los personajes alemanes en la cadena en modo de depuración (ver ventana):

    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;
        }
    }
¿Fue útil?

Solución

El XML que proporcionó no es válido, al menos eso es lo que dice Firefox:

Erreur d'Anticalze XML: Mal Formé Emplazing: http://www.onlinetvrecordor.com/?aktion=epg_export&format=xml&btn_ok=ok&> estaciones = 3sat, anixe, ard & from = 30.11.2011 & to = 30.11.2011 numéro de ligne 218, colonne 193:

(Perdón por los franceses)

Parece un poco más de cerca, parece que el analizador se rompe en la palabra "plötzlich", en el personaje "Ö".

Debe usar Cdata para evitar esto:

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

Otros consejos

No intente cargar un documento XML con una página HTML. Usar Paquete de agilidad HTML que estaba destinado a hacerlo.

EDITAR: Si solo desea la fuente de la página como una cadena, esto debería hacer el truco.

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top