2011-09-21 26 views
14

tôi có mã này:Làm thế nào để nạp XML từ URL trên 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) 
{ 
} 

nhưng khi tôi cố gắng để thực hiện nó, tôi nhận được lỗi này:

Ngoại lệ chi tiết: System.Xml. XmlException: Dữ liệu ở cấp cơ sở không hợp lệ. Dòng 1, vị trí 1.

Tại sao? Tôi đang ở đâu? Và làm thế nào tôi có thể khắc phục vấn đề này trên C#?

Cũng thử với:

myXmlDocument.Load(m_strFilePath);  

nhưng tôi nhận được:

Ngoại lệ chi tiết: System.Xml.XmlException: nhân vật không hợp lệ trong mã hóa nhất định. Dòng 1, vị trí 503.

Trả lời

28

Nó cho bạn biết rằng giá trị của m_strFilePath không phải là XML hợp lệ. Hãy thử:

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

Tuy nhiên, điều này là không (vì lý do chưa biết ... dường như bị nghẹt thở trên à của Umidità). Các công trình sau đây (vẫn đang cố gắng tìm ra những gì là sự khác biệt là mặc dù):

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

Nó nói Chi tiết ngoại lệ: System.Xml.XmlException: Ký tự không hợp lệ trong mã hóa đã cho. Dòng 1, vị trí 503. – markzzz

+1

Đúng vậy. Không biết tại sao, nhưng nó làm :) – markzzz

+0

Nó khiến tôi bối rối. Phải là một cái gì đó để làm với mã hóa, nhưng không thể nhận được để dưới cùng của nó. Bất kỳ ai? – spender

6

Bạn cần phải sử dụng Load() thay vì LoadXML(). LoadXML cố gắng phân tích một chuỗi thành XML, trong trường hợp này là URL của bạn.

Các vấn đề liên quan