在C#中如何操作XML
需要添加的命名空间:
using System.Xml;
几个公共对象:
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
第一步:
//创建到服务器同名目录下的xml文件:
        XmlDocument xdoc = new XmlDocument();
        //加入XML的声明部分<?xml version="1.0" encoding="gb2312" ?>
        XmlDeclaration xdecl = xdoc.CreateXmlDeclaration("1.0", "gb2312", null);
        xdoc.AppendChild(xdecl);
        //加入一根元素<Employees></Employees>
        XmlElement xelem = xdoc.CreateElement("Employees");
        xdoc.AppendChild(xelem);
        //向根元素中添加节点<Node></Node>
        for (int i = 1; i < 3; i++)
        {
            //取出根节点
            XmlNode root = xdoc.SelectSingleNode("Employees");
            //创建一个<Node>节点
            XmlElement xel = xdoc.CreateElement("Node");
            //设置节点的属性
            xel.SetAttribute("name", "张三疯");
            xel.SetAttribute("favor", "论剑");
            //创建节点<title>
            XmlElement xSub1 = xdoc.CreateElement("title");
            //设置节点中的文本内容
            xSub.InnerText = "太极功夫";
            //将<title>添加到<Node>中
            xel.AppendChild(xSub);
            //
            XmlElement xSub2 = xdoc.CreateElement("author");
            xSub2.InnerText = "三疯哥";
            xel.AppendChild(xSub2);
            XmlElement xSub3 = xdoc.CreateElement("price");
            xSub3.InnerText = "20.8";
            xel.AppendChild(xSub3);
            //将<Node>节点添加到根节点<Employees>中
            root.AppendChild(xel);
        }
        //保存文件
xdoc.Save(Server.MapPath("l"));
//////////////////////////////////////////////////////////////////////////////////////
在服务器目录下生成了名为l文件,内容如下所示:
<?xml version="1.0" encoding="gb2312"?>
<Employees>
  <Node name="张三疯" favor="论剑">
    <title>太极功夫</title>
    <author>三疯哥</author>
    <price>20.8</price>
  </Node>
  <Node name="张三疯" favor="论剑">
    <title>太极功夫</title>
    <author>三疯哥</author>
    <price>20.8</price>
  </Node>
</Employees>
第二步:向文档中添加一个新节点内容
//定义一个XML文档对象,加载XML文件
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(Server.MapPath("l"));
        //取出文档中的根节点<Employees>
        XmlNode root = xdoc.SelectSingleNode("Employees");
        //创建一个<Node>节点
        XmlElement xel = xdoc.CreateElement("Node");
        //设置节点属性
        xel.SetAttribute("name", "如来");
        xel.SetAttribute("favor", "论棍");
        //定义子节点
        XmlElement xSub1 = xdoc.CreateElement("title");
        xSub1.InnerText= "狂疯棍法";
        xel.AppendChild(xSub1);
        XmlElement xSub2 = xdoc.CreateElement("author");
        xSub2.InnerText = "高手";
        xel.AppendChild(xSub2);
        XmlElement xSub3 = xdoc.CreateElement("price");
        xSub3.InnerText = "123.4";
        xel.AppendChild(xSub3);
        //将新节点添加到根节点中
        root.AppendChild(xel);
        //保存文档
        xdoc.Save(Server.MapPath("l"));
//////////////////////////////////////////////////////////////////////////////////////
结果在原有内容中添加了一条新内容:
<?xml version="1.0" encoding=游戏xml文件修改"gb2312"?>
<Employees>
  <Node name="张三疯" favor="论剑">
    <title>太极功夫</title>
    <author>三疯哥</author>
    <price>20.8</price>
  </Node>
  <Node name="张三疯" favor="论剑">
    <title>太极功夫</title>
    <author>三疯哥</author>
    <price>20.8</price>
  </Node>
  <Node name="如来" favor="论棍">
    <title>狂疯棍法</title>
    <author>高手</author>
    <price>123.4</price>
  </Node>
</Employees>
第三步:修改节点及其属性的值
/载入XML
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(Server.MapPath("l"));
        //获取<Employees>节点中的所有子节点
        XmlNodeList nodeList = xdoc.SelectSingleNode("Employees").ChildNodes;
        //遍历所有子节点
        foreach (XmlNode xn in nodeList)
        {
            //如果节点的属性值为张三疯
            if (xn.Attributes["name"].Value == "张三疯")
            {
                //则修改成为
                xn.Attributes["name"].Value = "张三丰";
                //继续遍历该节点
                foreach (XmlNode n in xn.ChildNodes)
                {
                    //如果节点的名称为author
                    if (n.Name == "author")
                    {
                        //则修改文本
                        n.InnerText = "张无忌";
                    }
                }
            }
        }
xdoc.Save(Server.MapPath("l"));
/
/////////////////////////////////////////////////////////////////////////////////////
结果:将原来的所有结点的信息都修改了,xml的内容如下,
<?xml version="1.0" encoding="gb2312"?>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。