2012-02-24 51 views
0

编辑:我的错误问题是我没有url编码字符串,即xdoc.Load(Server.UrlEncode(“website.com”)) ;从没有doc类型的URL解析XML:什么是错误

在C#ASP.NET中,我从URL中检索XML。该XML的格式为如下所示:

<html> 
    <head></head> 
    <body> 
    <product> 
     <course> 
     </course> 
    </product> 
    ... more data 
    </body> 
</html> 

所以它真的HTML或者最好不是有效的XML。当我加载这个来自Internet上的服务器的xml时,我收到错误消息。

解析/加载失败是因为XML无效(HTML),还是失败,因为我从URL而不是本地文件检索XML?

我该如何成功解析这个文件?我是否需要添加XML文档类型,我是否使用C#HTML解析器?

的错误是:

// ERROR: Data at the root level is invalid. Line 1, position 1. 

    public string getProductXML() 
    { 
     XmlDocument xdoc = new XmlDocument(); 
     xdoc.Load("http://www.website.com/test.aspx?a=1&b=2"); //ERROR HERE: Data at the root level is invalid. Line 1, position 1. 
     // NOTE www.website.com is a different server to where this code is executing 
     XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("group"); 


    } 
+0

你确定你正在得到正确的XML吗?尝试手动下载使用'WebClient'然后'LoadXml()'得到的字符串。 – svick 2012-02-24 01:07:03

回答

0

如果您访问使用.net 3.5,我会建议使用Linq2Xml。使用Linq2Xml,我将使用WebClient来下载源代码,然后使用XElement.Parse()来解析html(XElement.Parse()不需要XML开始标记)。