xml读取和写入

 

1、需要的命名空间:
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;

2、数据来源:
Idictionary<string,string> source = new Dictionary<string,string>()
source.Add("name", "神州侠侣");
source.Add("quantity", "50");
source.Add("price", "45.55");
source.Add("author", "tiger");

3、写入后的xml文件样式:
<?xml version="1.0" encoding="utf-8"?>
<books>
        <book>
                <id>1</id>
                <name>神州侠侣</name>
                <quantity>50</quantity>
                <price>45.55</price>
                <author>tiger</author>
        </book>
</books>

3、采用 XmlTextWriter 写入数据,该方法会新建一个或改写现有的xml文件:
XmlTextWriter xml = new XmlTextWriter(Server.MapPath("/data/test.xml"), Encoding.UTF-8);
xml.Formatting = Formatting.Indented;
xml.WriteStartDocument();
xml.WriteStartElement("books");
xml.WriteStartElement("book");
foreach (KeyValuePair<string,string> c in source)
{
        xml.WriteStartElement(c.Key);
 xml.WriteCData(c.value);
        xml.WriteEndElement();
}
xml.WriteEndElement();
xml.WriteEndElement();
xml.WriteEndDocument();
xml.Flush();
xml.Close();

4、采用 XmlDocument 写入数据,该方法会在现有的xml文件基础上追加数据,但不会创建新的文件:
string file = Server.MapPath("/data/test.xml");
if(File.Exists(file))
{
        XmlDocument xml = new XmlDocument();
        xml.Load(file);

        //以下代码为自动创建序号时使用,若你的数据源本身有序号,则可忽略
        XmlNodeList node = xml.SelectNodes("books/book");
        int count = Convert.ToInt32(node.Item(node.Count - 1).ChildNodes.Item(0).InnerText);
        count++;

        XmlElement ab = xml.CreateElement("book");
        StringBuilder s = new StringBuilder();
        s.Append("<id><![CDATA[" + count.ToString() + "]]></id>");
        foreach(KeyValuePair<string,string> c in source)
        {
            s.Append("<" + c.Key + "><![CDATA[" + c.Value + "]]></" + c.Key + ">");
        }
        ab.InnerXml = s.ToString();
        xml.DocumentElement.AppendChild(ab);
        xml.Save(file);
}
else
{
        //文件不存在,这里可以采用第一种方法写入数据
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值