XmlDocument.Load Vs XmlDocument.LoadXml

时间:2009-11-02 11:16:06

标签: c# xmldocument

我刚使用XmlDocument.LoadXml遇到了问题。

应用程序崩溃,出现以下错误:

  

“根级别的数据无效。第1行,第1位”

在检查XML并发现它没有任何问题后,我搜索了一下,发现了一个使用XmlDocument.Load代替XmlDocument.LoadXml的提示。

我已经尝试过它并且效果很好。

我的问题是:两种方法之间有什么区别,哪些可能导致一种工作而另一种方法失败?

5 个答案:

答案 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.LoadXmlDocument.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>

所以请把一位母亲放在你的关卡之上,让它成为所有孩子的盛大母亲