使用Linq to XML 來讀取XML檔案的範例程式   Leave a comment

有一長段時間沒有發相關的技術文章了 (迷之聲: 你在混嘛~)

這次在協助處理讀取XML變成亂碼的問題,後來發現是因為使用了FileInfo.OpenText()的方式來讀取檔案

但好死不死那個檔案竟然是BIG5編碼,偏偏FileInfo.OpenText () 是使用 UTF-8的編碼方式來讀取檔案,請參考下方連結

FileInfo.OpenText 方法

原本是改成使用StreamReader 的方法,指定讀取的編碼方式為BIG5

   1:  using (StreamReader sr = new StreamReader(fi.FullName, Encoding.GetEncoding("big5")))
   2:  {
   3:      return sr.ReadToEnd();
   4:  }

但是,這樣寫又把程式給寫死了,如果今天遇到編碼是UTF8,那不就掛了嗎?

原本的想法是,先偵測檔案編碼格式,在使用對應的編碼去開取檔案,不過,經理提供了一個更好做法

使用LINQ to XML來讀取XML檔,可參考下列連結

HOW TO:讀取和寫入編碼的文件

只要以下這一行,即可輕鬆解決檔案編碼問題

   1:  XDocument xdoc = XDocument.Load(_filePath);

是的! 你沒看錯,只要一行,他就會幫你把XML檔案讀取進來,不管是UTF8 或是 BIG5,都可以自動使用相對應的編碼來讀取

不過要特別注意,如果你在XML中宣告編碼與檔案儲存的編碼格式不同,他還是沒辦法讀取喔!!

舉例來說:

XML文件中宣告

<?xml version="1.0″ encoding="UTF-8″?>

但是XML卻是使用BIG5的編碼方式儲存

這樣讀取還是出現錯誤。

本人有寫一隻小程式,可以下載下來參考看看

點我下載檔案

(是使用VS2008開發的喔)

以下是測試程式的相關截圖

Default_form UTF8

UTF8UTF8BIG5

廣告

Posted 2009 年 10 月 07 日 by sfcer0414 in KB

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: