2010-03-19 59 views
0

// .net 2.0和vs2005使用。如何在C#中將XML格式的文件讀取到內存中?

我在下面找到一些代碼。 我不確定我是否可以擴展示例代碼?謝謝。

if (radioButton.Checked) 
{ 
    MemoryStream ms=new MemoryStream(); 
    byte[] data=ASCIIEncoding.ASCII.GetBytes(textBox1.Text); 
    ms.Write(data,0,data.Length); 
    reader = new XmlTextReader(ms); 
    //some procesing code 
    ms.Close(); 
    reader.Close(); 
} 

順便說一句,請你幫我做一下下面一行的解剖。

byte[] data=ASCIIEncoding.ASCII.GetBytes(textBox1.Text); 

回答

4
using (var reader = new StringReader(textBox1.Text)) 
using (var xmlReader = XmlReader.Create(reader)) 
{ 
    while (xmlReader.Read()) 
    { 
     //some procesing code 
    } 
} 

關於這條線byte[] data=ASCIIEncoding.ASCII.GetBytes(textBox1.Text);

聲明一個稱爲字節的類型的數組data變量並將其分配給textBox1.Text字符串轉換爲使用ASCII編碼的字節數組的內容。

+0

@Darin Dimitrov,我查找了關於** var **的關鍵字的MSN:「從Visual C#3.0開始,在方法範圍聲明的變量可以有一個隱式類型var。」。我仍然在使用.net 2.0。謝謝。 – 2010-03-19 07:54:00

+1

然後分別用'TextReader'和'XmlReader'替換我的代碼中的兩個'vars'。 – 2010-03-19 08:10:30

1

要回答你的第二個問題:

byte[] data=ASCIIEncoding.ASCII.GetBytes(textBox1.Text);

通常情況下,文本被存儲爲一個字符序列,每一個存儲在一個Unicode格式,每字符佔用幾個字節。 ASCII格式是一種較舊的格式,每個字符使用一個字節(實際上,最初是7位,然後擴展爲使用8位)。

ASCIIEncoding提供了一種轉換或從這種舊格式轉換的方法。以上代碼行將文本轉換爲ASCII表示,並返回包含該格式文本的「原始」字節數組。

請注意,ASCII爲每個字符使用一個字節,因此只能表示256個不同的字符 - Unicode可以表示數千個字符,因此在轉換過程中,某些字符將丟失(轉換爲更簡單的形式,其中急性/ cedilla /變音符丟失或被另一個字符替換 - 例如「?」)

(這樣做的典型優點是編寫代碼以處理更簡單的格式或使用更少的內存會更簡單,因爲它僅使用每個字符一個字節,或者您需要將數據發送給需要ASCII碼的「第三方」)

+0

感謝您的詳細信息。幫了很多。 – 2010-03-19 07:56:32

1
Filestream fs = new Filestream(textBox1.Text); 
XmlReader reader = XmlReader.Create(fs); 

XmlReader msdn documentation

+0

嗨尼克,非常感謝。 – 2010-03-24 02:21:37