加载XML-跳过第一行

加载XML-跳过第一行,xml,xml-parsing,Xml,Xml Parsing,我正试图从一个网站解析xml,我得到的错误是“根级别的数据无效。第1行,位置1 以下是网站输出: <Forecast xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Days> <Day> <date>16/06/2016</date> ...etc 您提供的第一行通常由浏览

我正试图从一个网站解析xml,我得到的错误是“根级别的数据无效。第1行,位置1

以下是网站输出:

<Forecast xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Days>

<Day>

<date>16/06/2016</date>

...etc
您提供的第一行通常由浏览器在尝试查找样式信息时生成。 编辑:您现在更改了它。为了不混淆其他人,我将它划掉了

因此,实际上,在下载文件时,您正在查看纯XML。 我的第一个意图是BOM(也可以找到解决方案)

在尝试解析XML数据时,解析器反而会找到字节顺序标记(BOM)并抛出错误。因此,像示例中那样删除BOM应该可以解决问题。

您提供的第一行通常由浏览器在尝试查找样式信息时生成。 编辑:您现在更改了它。为了不混淆其他人,我将它划掉了

因此,实际上,在下载文件时,您正在查看纯XML。 我的第一个意图是BOM(也可以找到解决方案)


在尝试解析XML数据时,解析器会找到字节顺序标记(BOM)并引发错误。因此,删除示例中的BOM应该可以解决问题。

这是一个公共URL,您可以共享它以便我们检查吗?通常XML文档不是以这样的文本开头的,而是浏览器在呈现XML时添加该行。“查看源代码”是什么“在浏览器显示中?我不想发布url,因为它包含我的私有API密钥。不过,你说得对——当我查看源代码时,第一行不在那里。很抱歉。然后,它显示了我给出的其他内容,除了没有换行符等。这是一个公共URL,你能分享它以便我们检查吗?通常,XML文档并不以这样的文本开头,而是由浏览器在呈现XML时添加该行。浏览器中的“查看源代码”显示了什么?我不想发布url,因为它包含我的私有API密钥。不过,你说得对——当我查看源代码时,第一行不在那里。很抱歉。然后,它显示了我给出的其余部分,除了没有换行符等。您链接到的示例将从xml字符串中删除BOM表。我在尝试加载数据时遇到错误,因此没有字符串可处理。您知道如何处理这种情况吗?是否可以将文件下载到字符串中,然后从那里解析它?有几个消息来源说UTF-8和字节顺序标记不应该是问题,因为load函数可以自己找到它们。现在无法真正测试它。我以后可以更深入地研究一下,我不确定。最终,这将是一个一天发生几次的自动呼叫,因此我认为在那一点上下载它是不可能的,但也许在我找出问题之前值得探索?我的意思是你可以采用这种方法。因此,在解析文件之前,您正在下载该文件。因此,您可以根据需要操作数据:使用(var wc=new System.Net.WebClient())contents=wc.DownloadString(url);好的,我尝试了这种方法,现在我在尝试解析文档时遇到错误“XML文档(1,1)中存在错误”(我已经按照他们所说的方式删除了BOM)。您链接的示例从XML字符串中删除了BOM。我在尝试加载数据时遇到错误,因此没有字符串可处理。您知道如何处理这种情况吗?是否可以将文件下载到字符串中,然后从那里解析它?有几个消息来源说UTF-8和字节顺序标记不应该是问题,因为load函数可以自己找到它们。现在无法真正测试它。我以后可以更深入地研究一下,我不确定。最终,这将是一个一天发生几次的自动呼叫,因此我认为在那一点上下载它是不可能的,但也许在我找出问题之前值得探索?我的意思是你可以采用这种方法。因此,在解析文件之前,您正在下载该文件。因此,您可以根据需要操作数据:使用(var wc=new System.Net.WebClient())contents=wc.DownloadString(url);好的,我尝试了这种方法,现在当我试图解析文档时,我得到了一个错误“XML文档(1,1)中有一个错误”(我已经按照他们说的方式删除了BOM)。
XmlDocument doc1 = new XmlDocument();
doc1.Load(url);
XmlElement root = doc1.DocumentElement;
XmlNodeList nodes = root.SelectNodes("/Forecast/Days/Day");
foreach (XmlNode node in nodes)
{
            string max = node["temp_max_f"].InnerText;
            string min = node["temp_min_f"].InnerText;
            string date = node["date"].InnerText;
            Console.WriteLine("{0}   {1}    {2}", date, max, min);

}