2011-09-21 35 views
14

tengo este código:Cómo cargar XML desde URL en XmlDocument()

string m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it"; 

XmlDocument myXmlDocument = new XmlDocument(); 
myXmlDocument.LoadXml(m_strFilePath); 

foreach (XmlNode RootNode in myXmlDocument.ChildNodes) 
{ 
} 

pero cuando intento ejecutarlo, me sale este error:

Detalles de la excepción: System.XML. XmlException: los datos en el nivel raíz no son válidos. Línea 1, posición 1.

¿Por qué? ¿Dónde estoy equivocado? ¿Y cómo puedo solucionar este problema en C#?

también trató con:

myXmlDocument.Load(m_strFilePath);  

pero me sale:

Detalles de la excepción: System.Xml.XmlException: carácter no válido en la codificación dada. Línea 1, posición 503.

Respuesta

28

Le está diciendo que el valor de m_strFilePath no es XML válido. Proveedores:

string m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it"; 
XmlDocument myXmlDocument = new XmlDocument(); 
myXmlDocument.Load(m_strFilePath); //Load NOT LoadXml 

Sin embargo, esto no funciona bien (por razones desconocidas ... parece estar ahogándose en la à de Umidità). Las siguientes obras (todavía tratando de averiguar cuál es la diferencia sin embargo):

var m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it"; 
string xmlStr; 
using(var wc = new WebClient()) 
{ 
    xmlStr = wc.DownloadString(m_strFilePath); 
} 
var xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(xmlStr); 
+0

Dice Detalles de la excepción: System.Xml.XmlException: Carácter no válido en la codificación dada. Línea 1, posición 503. – markzzz

+1

Sí, eso funciona. No sé por qué, pero sí :) – markzzz

+0

Me tiene perplejo. Debe ser algo relacionado con la codificación, pero no puede llegar al fondo. ¿Nadie? – spender

6

Es necesario utilizar Load() en lugar de LoadXML(). LoadXML intenta analizar una cadena en XML, en este caso su URL.

Cuestiones relacionadas