根元素缺失
我正在从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
你能告诉我哪里出错了吗?
嗨,这是奇怪的方式,但尝试一次
- 将文件内容读入字符串
- 打印字符串并检查您是否获得了正确的XML
- 你可以使用
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这样的嗅探器正确下载。
我写了一个快速控制台应用程序来运行你的代码并解析文件,它对我来说很好。
-
检查位于配置文件夹中的trees.config文件…有时候(我不知道为什么)这个文件变成空的,就像有人删除里面的内容…在本地电脑上保留备份这个文件然后当出现此错误 – 用本地文件替换服务器文件。 这是我在发生此错误时所做的事情。
-
检查服务器上的可用空间。 有时这就是问题所在。
祝好运。