我刚使用XmlDocument.LoadXml
遇到了问题。
应用程序崩溃,出现以下错误:
“根级别的数据无效。第1行,第1位”
在检查XML并发现它没有任何问题后,我搜索了一下,发现了一个使用XmlDocument.Load
代替XmlDocument.LoadXml
的提示。
我已经尝试过它并且效果很好。
我的问题是:两种方法之间有什么区别,哪些可能导致一种工作而另一种方法失败?
答案 0 :(得分:35)
XmlDocument.Load用于从流,TextReader,路径/ URL或XmlReader加载XML。 XmlDocument.LoadXml用于加载字符串中包含的XML。
根据XML实际存储的位置,它们是加载XML的根本不同方式。所以听起来你使用错误的方法来处理你的XML。
答案 1 :(得分:24)
您是否尝试使用XmlDocument.LoadXml
并传入文件名?它没有这样做 - 它假定您在中传递的字符串是 XML。所以你可以使用:
doc.LoadXml("<root><child /><root>");
或
doc.Load("myfile.xml");
如果这没有帮助,你能否展示你失败的工作代码?您可以通过不同的方式将LoadXml
更改为Load
...
答案 2 :(得分:3)
假设您以正确方式使用XmlDocument.Load
和XmlDocument.LoadXml
,则此问题可能由Byte Order Mark引起。
此other question可能有用。
答案 3 :(得分:2)
Load()从某个源加载,而LoadXml()直接从字符串加载
答案 4 :(得分:0)
应用程序崩溃时出现以下错误:“根级别的数据无效。第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>
所以请把一位母亲放在你的关卡之上,让它成为所有孩子的盛大母亲