簡體   English   中英

XmlDocument.Load Vs XmlDocument.LoadXml

[英]XmlDocument.Load Vs 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 ...

假設您以正確的方式使用XmlDocument.LoadXmlDocument.LoadXml ,這個問題可能是由字節順序標記引起的。

這個問題可能有用。

Load()從某個源加載,而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>

所以請把一位母親放在你的水平之上,讓它成為所有孩子的盛大母親

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM