如何在C#中将XML格式文件读入内存?

时间:2010-03-19 07:25:47

标签: c# xml

// .net 2.0和vs2005使用。

我在下面找到了一些代码。 我不确定我是否可以扩展示例代码?谢谢。

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);

3 个答案:

答案 0 :(得分: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的变量类型为byte的变量,并将其分配给使用ASCII编码转换为字节数组的textBox1.Text字符串的内容。

答案 1 :(得分:1)

回答你的第二个问题:

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

通常,文本存储为一系列字符,每个字符都以unicode格式存储,每个字符占用几个字节。 ASCII格式是一种较旧的格式,每个字符使用一个字节(实际上,最初为7位,然后扩展为使用8位)。

ASCIIEncoding提供了一种转换为旧格式的方法。上面的代码行将文本转换为ASCII表示形式,并返回包含该格式文本的“原始”字节数组。

请注意,ASCII为每个字符使用一个字节,因此只能表示256个不同的字符 - Unicode可以表示数千个字符,因此在转换过程中,某些字符将丢失(转换为更简单的形式,其中acute / cedilla / umlaut丢失,或被另一个角色取代 - 例如“?”)

(这样做的典型优点是编写代码以处理更简单的格式可能更容易,或者它使用更少的内存,因为它只使用每个字符一个字节,或者您需要将数据发送到“第三方“要求它是ASCII”

答案 2 :(得分:1)

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

来自XmlReader msdn documentation