我正在从xxx URL阅读XML,但由于缺少根元素,因此出现错误。
我的读取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响应如下:
<All_Products>
<Product>
<ProductCode>GFT</ProductCode>
<ProductName>Gift Certificate</ProductName>
<ProductDescriptionShort>Give the perfect gift. </ProductDescriptionShort>
<ProductDescription>Give the perfect gift.</ProductDescription>
<ProductNameShort>Gift Certificate</ProductNameShort>
<FreeShippingItem>Y</FreeShippingItem>
<ProductPrice>55.0000</ProductPrice>
<TaxableProduct>Y</TaxableProduct>
</Product>
</All_Products>
你能告诉我我错在哪里吗?
7条答案
按热度按时间w51jfk4q1#
以防其他人从Google登陆这里,我在使用XDocument.Load(Stream)方法时被这个错误消息咬了一口。
确保流位置设置为0(零),然后再尝试加载流,这是一个容易犯的错误,我总是忽略!
camsedfj2#
确保你的XML看起来像这样:
此外,如https://landesk378.rssing.com/chan-11533214/article34.html所示-
一个空白的XML文件将返回相同的根元素缺失异常。每个XML文件必须有一个包含所有其他元素的根元素/节点。
wvyml7n53#
嗨,这是奇怪的方式,但尝试一次
1.将文件内容读入字符串
1.打印字符串并检查是否得到了正确的XML
1.可以使用
XMLDocument.LoadXML(xmlstring)
我尝试与您的代码和相同的XML没有添加任何XML声明它为我工作
正如Phil在下面的答案中所述,如果xmlStream位置不为零,请将其设置为零。
nlejzf6q4#
如果从远程位置加载XML文件,我将使用Fiddler等嗅探器检查文件是否确实正确下载。
我写了一个快速的控制台应用程序来运行你的代码和解析文件,它对我来说工作得很好。
7xllpg7q5#
1.检查配置文件夹中的trees.config文件...有时(我不知道为什么)这个文件变成空的,就像有人删除里面的内容...在本地电脑中备份这个文件,然后当这个错误出现时-用本地文件替换服务器文件。这就是我在这个错误发生时所做的。
1.检查这可用空间在这服务器.有时这是问题.
祝你好运。
u5i3ibmn6#
当我尝试读取从存档提取到内存流的XML时,我遇到了同样的问题。
问题出在这几行:
解决方案是(感谢@Phil):
zbsbpyhn7#
在我的情况下,我发现应用程序设置被损坏。所以要解决它,只需删除本地appdata
%appdata%/../Local/YOUR_APP_NAME
中的文件夹。