【问题标题】:Parsing XML from URL that has no doc type: Whats the error从没有文档类型的 URL 解析 XML:什么是错误
【发布时间】:2025-12-10 20:35:02
【问题描述】:

编辑:我的错误是我没有对字符串进行 url 编码,即 xdoc.Load(Server.UrlEncode("website.com") );

在 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");


    }

【问题讨论】:

  • 你确定你得到了正确的 XML 吗?尝试手动下载它,例如使用WebClient 然后LoadXml() 得到的字符串。

标签: c# asp.net xml


【解决方案1】:

如果您可以使用 .Net 3.5,我会推荐使用 Linq2Xml。使用 Linq2Xml,我会使用 WebClient 下载源代码,然后使用 XElement.Parse() 解析 html(XElement.Parse() 不需要 XML 开始标签)。

【讨论】: