1. 程式人生 > >操作XML 報錯:根級別上的資料無效 和 給定編碼中的字元無效

操作XML 報錯:根級別上的資料無效 和 給定編碼中的字元無效

  1. 根級別上的資料無效,解決如下:
  2. privatevoid button1_Click(object sender, EventArgs e)
  3.         {
  4. try
  5.             {
  6.                 XmlDocument doc = new XmlDocument();
  7. string file = @"D:/Books.xml";
  8.                 file = file.Trim();
  9.                 doc.LoadXml(file);
  10.             }
  11. catch (XmlException ex)
  12.             {
  13.                 MessageBox.Show(ex.Message + 
    "/r/n" + ex.StackTrace);
  14.             }            
  15.         }

前提是經過很檢驗,XML檔案是合格並有效的。可一執行就就會出現“根級別上的資料無效”的錯誤,很久沒弄明白,網上搜了一下,發現遇到這問題的還真不少。有的網友說LoadXml之前加上file = file.Trim();就解決了,試了還是不行。於是改用Load()方法,問題解決。再查Msdn,原來兩個方法的用法不同。

    LoadXml (): 該方法從字串中讀取   XML。   LoadXml("<book><title>C#</title></book>");
    Load ():  方法將文件置入記憶體中幷包含可用於從每個不同的格式中獲取資料的過載方法。Load(檔案)

(可能因為這兩件方法都有一個引數為string的過載吧,於是理所當然的以後這兩個方法混用了)。

    希望為同樣錯誤困擾的網友有點點幫助,也讓自己牢記。

給定編碼中的字元無效,解決如下:

我是直接新建txt檔案然後把內容貼進去,儲存後直接改檔名和字尾名,txt檔案的編碼是ANSI。所以如果想改正的話,也簡單:用記事本開啟檔案,檔案---->另存為---->對話方塊:編碼---->utf-8。OK了!