xml的操作

XmlDocument xmldoc;

XmlElement xmlelem;


/// <summary>
/// 创建一个带内容的xml文件
/// </summary>
public void CreateXml()
{
        xmldoc = new XmlDocument();
        //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
        XmlDeclaration xmldecl;
        xmldecl = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
        xmldoc.AppendChild(xmldecl);

        //加入一个根元素
        xmlelem = xmldoc.CreateElement("", "Employees", "");
        xmldoc.AppendChild(xmlelem);
        //加入另外一个元素
        for (int i = 1; i < 3; i++)
        {

                XmlNode root = xmldoc.SelectSingleNode("Employees");//查找<Employees>
                XmlElement xe1 = xmldoc.CreateElement("Node");//创建一个<Node>节点
                xe1.SetAttribute("genre", "DouCube");//设置该节点genre属性
                xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性

                XmlElement xesub1 = xmldoc.CreateElement("title");
                xesub1.InnerText = "CS从入门到精通";//设置文本节点
                xe1.AppendChild(xesub1);//添加到<Node>节点中
                XmlElement xesub2 = xmldoc.CreateElement("author");
                xesub2.InnerText = "候捷";
                xe1.AppendChild(xesub2);
                XmlElement xesub3 = xmldoc.CreateElement("price");
                xesub3.InnerText = "58.3";
                xe1.AppendChild(xesub3);

                root.AppendChild(xe1);//添加到<Employees>节点中
        }
        //保存创建好的XML文档
        xmldoc.Save(Server.MapPath("/data.xml"));
}


/// <summary>
/// 添加一个节点
/// </summary>
public void addNode()
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));
        XmlNode root = xmlDoc.SelectSingleNode("Employees");//查找<Employees>
        XmlElement xe1 = xmlDoc.CreateElement("Node");//创建一个<Node>节点
        xe1.SetAttribute("genre", "张三");//设置该节点genre属性
        xe1.SetAttribute("ISBN", "1-1111-1");//设置该节点ISBN属性

        XmlElement xesub1 = xmlDoc.CreateElement("title");
        xesub1.InnerText = "C#入门帮助";//设置文本节点
        xe1.AppendChild(xesub1);//添加到<Node>节点中
        XmlElement xesub2 = xmlDoc.CreateElement("author");
        xesub2.InnerText = "高手";
        xe1.AppendChild(xesub2);
        XmlElement xesub3 = xmlDoc.CreateElement("price");
        xesub3.InnerText = "158.3";
        xe1.AppendChild(xesub3);

        root.AppendChild(xe1);//添加到<Employees>节点中
        xmlDoc.Save(Server.MapPath("/data.xml"));
}

/// <summary>
/// 修改节点的值(属性和子结点);
/// </summary>
public void UdpateNode()
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));

        XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

        foreach (XmlNode xn in nodeList)//遍历所有子节点
        {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三”
                {
                        xe.SetAttribute("genre", "update张三");//则修改该属性为“update张三”

                        XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                        foreach (XmlNode xn1 in nls)//遍历
                        {
                                XmlElement xe2 = (XmlElement)xn1;//转换类型
                                if (xe2.Name == "author")//如果找到
                                {
                                        xe2.InnerText = "亚胜";//则修改
                                }
                        }
                }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));//保存。
}

/// <summary>
/// 修改节点(添加结点的属性和添加结点的自结点);
/// </summary>
public void UdpateNodeAttribute()
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));

        XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

        foreach (XmlNode xn in nodeList)
        {
                XmlElement xe = (XmlElement)xn;
                xe.SetAttribute("test", "111111");

                XmlElement xesub = xmlDoc.CreateElement("flag");
                xesub.InnerText = "1";
                xe.AppendChild(xesub);
        }
        xmlDoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 删除节点中的某一个属性;
/// </summary>
public void DelectNodeAttribute()
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));
        XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
        foreach (XmlNode xn in xnl)
        {
                XmlElement xe = (XmlElement)xn;
                xe.RemoveAttribute("genre");//删除genre属性

                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                foreach (XmlNode xn1 in nls)//遍历
                {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型
                        if (xe2.Name == "flag")//如果找到
                        {
                                xe.RemoveChild(xe2);//则删除
                        }
                }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 删除节点;
/// </summary>
public void DelectNode()
{
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));
        XmlNode root = xmlDoc.SelectSingleNode("Employees");
        XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
        for (int i = 0; i < xnl.Count; i++)
        {
                XmlElement xe = (XmlElement)xnl.Item(i);
                if (xe.GetAttribute("genre") == "张三")
                {
                root.RemoveChild(xe);
                if (i < xnl.Count) i = i - 1;
                }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 按照文本文件读取xml
/// </summary>
/// <returns></returns>
public string GetXmlStrByXml() {
        System.IO.StreamReader myFile = new System.IO.StreamReader(Server.MapPath("data.xml"), System.Text.Encoding.Default);
        //注意System.Text.Encoding.Default
        return myFile.ReadToEnd();//myString是读出的字符串
}

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

学习来源:

http://www.cnblogs.com/txw1958/archive/2013/01/16/csharp-xml.html

 

posted @ 2015-11-09 16:49  就是这么真实  阅读(182)  评论(0编辑  收藏  举报