关于在自己的xml里面嵌入XmlSerializer解析出来的xml的办法

因为用到了不少如DataTable等数据结构。需要保存在硬盘上。为了想偷一点小小的懒.所以使用了类库中的XmlSerializer。发现使用的时候还有不少的曲折。不过经过研究觉得。这样一来方便许多。主要的想法是在memory里面开了一个空间来存放xmlserializer产生的文件。这样就不需要产生在硬盘上了
代码如下:

//Serializer
           XmlDocument doc = new XmlDocument();
            XmlSerializer ser = new XmlSerializer(typeof(DataTable));
            MemoryStream ms = new MemoryStream();// create a stream in memory
            XmlWriter writer = XmlWriter.Create(ms);
            //dt.WriteXml(writer);
            try
            {
                ser.Serialize(writer, dataTable);
            }
            catch (Exception ex)
            {
                throw new Exception("Something wrong while serialize datatable", ex);
            }
            writer.Close();
            byte[] b = ms.ToArray();
            ms.Close();
            ms = new MemoryStream(b);
            XmlDocument tempDoc = new XmlDocument();
            tempDoc.Load(ms);
            ms.Close();

            XmlNode tableNode = doc.ImportNode(tempDoc.DocumentElement, true);
           //tableNode name is generate automaticaly is called DataTable
            chartDataNode.AppendChild(tableNode);

//Deserialize

            XmlSerializer ser = new XmlSerializer(typeof(DataTable));
            XmlDocument tempDoc = new XmlDocument();
          //Serializer Create a node called datatable in above code
            XmlNode rootnode = tempDoc.ImportNode(doc.SelectSingleNode(".//DataTable"), true);
            //doc is the xmldocment create when Serialize
            tempDoc.AppendChild(rootnode);
            MemoryStream ms = new MemoryStream();
            XmlWriter writer2 = XmlWriter.Create(ms);
            tempDoc.Save(writer2);
            writer2.Close();
            byte[] b2 = ms.ToArray();
            ms.Close();

            ms = new MemoryStream(b2);
            XmlReader reader = XmlReader.Create(ms);

            dataTable = (DataTable)ser.Deserialize(reader);
            

            reader.Close();
            ms.Close();

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值