C# XML 用法

本文介绍如何使用C#在内存中创建XML文档并将其转换为字符串,同时也涵盖了如何从内存中的字符串加载XML文档,以及处理过程中遇到的特殊字符问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建XML同时写入文件



2、创建XML同时写入内存

// 在内存中创建xml到字符串
            MemoryStream fileStream = new MemoryStream();
            XmlTextWriter textWriter = new XmlTextWriter(fileStream, Encoding.Default);
            textWriter.Formatting = Formatting.Indented;

            textWriter.WriteStartDocument();

            textWriter.WriteStartElement("file");
            textWriter.WriteAttributeString("name", "大唐双龙传");
            textWriter.WriteAttributeString("path", "19");
            textWriter.WriteAttributeString("hashid", "19");
            textWriter.WriteAttributeString("size", "19");
            textWriter.WriteAttributeString("share", "19");
            textWriter.WriteEndElement();

            textWriter.WriteEndDocument();

            textWriter.Close();

            byte[] data = fileStream.ToArray();
            string xmlmsg = Encoding.Default.GetString(data);

            MessageBox.Show(xmlmsg);

另一种方法:

 XmlDocument xmldoc = new XmlDocument();
        XmlNode xRoot = xmldoc.CreateNode(XmlNodeType.Element, "root", "");
        xmldoc.AppendChild(xRoot);

        MemoryStream ms = new MemoryStream();
        XmlTextWriter tw = new XmlTextWriter(ms, Encoding.Unicode);
        tw.Formatting = Formatting.Indented;
        tw.Indentation = 4;
        xmldoc.Save(tw);

        byte[] ary = ms.ToArray();
        string s = Encoding.UTF8.GetString(ary);
//        Response.Write(s);  //输出看是正常的
        xmldoc.LoadXml(s);

前面多了一个特殊字符,所以最后一行会出错

确实是增加了一个编码字符,加上这一行就行了:
s = s.Substring(1, s.Length - 1);


3、从文件中读取XML



4、从内存中读取XML

 // 从内存中读取xml字符串
            XmlDocument xmldoc = new XmlDocument();
            //xmldoc.Load(fileStream);
            xmldoc.LoadXml(xmlmsg);
            XmlNode node = xmldoc.SelectSingleNode("/file");

            try
            {
                string fname = node.Attributes.GetNamedItem("name").Value;
                MessageBox.Show(fname);
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.ToString());
            }




问题及解决办法:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值