根元素缺失

我正在从xxx URl读取xml,但由于缺少Root元素,我收到错误。

我读取xml响应的代码如下:

XmlDocument doc = new XmlDocument(); doc.Load("URL from which i am reading xml"); XmlNodeList nodes = doc.GetElementsByTagName("Product"); XmlNode node = null; foreach (XmlNode n in nodes) { } 

并且xml响应如下:

   GFT Gift Certificate Give the perfect gift.  Give the perfect gift. Gift Certificate Y 55.0000 Y   

你能告诉我哪里出错了吗?

嗨,这是奇怪的方式,但尝试一次

  1. 将文件内容读入字符串
  2. 打印字符串并检查您是否获得了正确的XML
  3. 你可以使用XMLDocument.LoadXML(xmlstring)

我尝试使用您的代码和相同的XML,而不添加任何适用于我的XML声明

 XmlDocument doc = new XmlDocument(); doc.Load(@"H:\WorkSpace\C#\TestDemos\TestDemos\XMLFile1.xml"); XmlNodeList nodes = doc.GetElementsByTagName("Product"); XmlNode node = null; foreach (XmlNode n in nodes) { Console.WriteLine("HI"); } 

它的工作非常好

为了防止其他人从Google登陆,我在使用XDocument.Load(Stream)方法时被此错误消息所困扰。

 XDocument xDoc = XDocument.Load(xmlStream); 

在尝试加载Stream之前,请确保将流位置设置为0(零),这是我总是忽略的一个简单错误!

 if (xmlStream.Position > 0) { xmlStream.Position = 0; } XDocument xDoc = XDocument.Load(xmlStream); 

确保XML看起来像这样:

   ...  

此外,空白XML文件将返回相同的Root元素缺少exception。 每个XML文件都必须有一个根元素/节点,它包含所有其他元素。

如果您从远程位置加载XML文件,我会检查文件是否实际上正在使用像Fiddler这样的嗅探器正确下载。

我写了一个快速控制台应用程序来运行你的代码并解析文件,它对我来说很好。

  1. 检查位于配置文件夹中的trees.config文件…有时候(我不知道为什么)这个文件变成空的,就像有人删除里面的内容…在本地电脑上保留备份这个文件然后当出现此错误 – 用本地文件替换服务器文件。 这是我在发生此错误时所做的事情。

  2. 检查服务器上的可用空间。 有时这就是问题所在。

祝好运。