我刚刚遇到了使用XmlDocument.LoadXml
.
应用程序崩溃,出现以下错误:
“根级别的数据无效。第 1 行,位置 1”
在检查了 XML 并没有发现任何问题后,我用谷歌搜索了一下,发现了一个可以使用的技巧,XmlDocument.Load
而不是XmlDocument.LoadXml
.
我已经尝试过了,而且效果很好。
我的问题是:这两种方法有什么区别,什么可能导致一种工作而另一种失败?
我刚刚遇到了使用XmlDocument.LoadXml
.
应用程序崩溃,出现以下错误:
“根级别的数据无效。第 1 行,位置 1”
在检查了 XML 并没有发现任何问题后,我用谷歌搜索了一下,发现了一个可以使用的技巧,XmlDocument.Load
而不是XmlDocument.LoadXml
.
我已经尝试过了,而且效果很好。
我的问题是:这两种方法有什么区别,什么可能导致一种工作而另一种失败?
XmlDocument.Load用于从流、TextReader、路径/URL 或 XmlReader 加载 XML。 XmlDocument.LoadXml用于加载包含在字符串中的 XML。
它们是加载 XML 的根本不同方式,具体取决于 XML 的实际存储位置。因此,听起来您对 XML 的位置使用了错误的方法。
您是否尝试使用XmlDocument.LoadXml
并传入文件名?它不这样做 - 它假定您传入的字符串是XML。所以你可以使用:
doc.LoadXml("<root><child /><root>");
或者
doc.Load("myfile.xml");
如果这没有帮助,你能展示你的失败和工作代码吗?您可以通过多种方式从使用更改LoadXml
为Load
...
Load() 从某个源加载,而 LoadXml() 直接从字符串加载
假设您以正确的方式XmlDocument.Load
使用此问题可能是由Byte Order Mark引起的。XmlDocument.LoadXml
这个其他问题可能有用。
应用程序因以下错误而崩溃:“根级别的数据无效。第 1 行,位置 1”我怀疑您的 xml 数据没有根级别:例如:
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
您需要在底层之上至少有一个根级别。例如:
<areas>
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
</areas>
所以请把一位母亲放在你的水平之上,让它成为所有孩子的祖母