• 【原创】包含CDATA C#操作XML(无命名空间),添加/删除/编辑节点


    本文介绍的是没有指定命名空间的XML(如需要操作带命名空间的,请点击),最近公司项目做的都是基于xml处理的,网上也一大堆有关xml操作的文章,几乎都是转载来的。今天小弟特意自己写3个例子,供需要的朋友学习。

    xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <Books>
    <Book ID="1">
    <Title>C#入门经典</Title>
    <Price>95.00</Price>
    </Book>
    <Book ID="13">
    <Title>C#从入门到精通</Title>
    <Price>145.00</Price>
    </Book>
    <Book ID="4">
    <Title>Java高级编程</Title>
    <Price>165.00</Price>
    </Book>
    </Books>

          

           //添加xml节点
            private void addxml()
            {
                XmlDocument xmldoc = new XmlDocument();
                //加载xml文件
                xmldoc.Load(@"E:\Test\Test\tt.xml");
                //查找 根节点 Books
                XmlNode root = xmldoc.SelectSingleNode("Books");
                //创建 子节点 Book
                XmlElement book = xmldoc.CreateElement("Book");
                book.SetAttribute("ID", "2");//设置子节点属性
                //创建 Book 子节点 Title
                XmlElement title = xmldoc.CreateElement("Title");
                title.InnerText = "C#高级编程";
                //title 节点 添加到 root
                book.AppendChild(title);
                //创建 Book 子节点 Price
                XmlElement price = xmldoc.CreateElement("Price");
                price.InnerText = "145.00";
                //price 节点 添加到 root
                book.AppendChild(price);

                //最后把book 节点添加到root
                root.AppendChild(book);
                //保存
                xmldoc.Save(@"E:\Test\Test\tt.xml");
            }

            //删除xml 节点
            private void deletexml()
            {
                XmlDocument xmldoc = new XmlDocument();
                //加载xml文件
                xmldoc.Load(@"E:\Test\Test\tt.xml");

                /*
                //查找到ID=2的节点,删除book 下面的子节点,最后会留下一个空的<book></book>
                XmlNodeList nodelist = xmldoc.SelectNodes("//Books/Book[@ID=2]");//需了解xpath
                foreach (XmlNode n in nodelist)
                {
                    XmlElement xe = (XmlElement)n;
                    //删除属性
                    xe.RemoveAllAttributes();
                    //删除节点
                    xe.RemoveAll();
                }
                 */
                //删除 book=2 节点(包括book 节点)
                XmlNodeList nodelist = xmldoc.SelectNodes("//Books/Book[@ID=2]");//需了解xpath
                foreach (XmlNode n in nodelist)
                {
                    n.ParentNode.RemoveChild(n);
                }

                //保存
                xmldoc.Save(@"E:\Test\Test\tt.xml");
            }
            //修改xml 节点
            private void updatexml()
            {
                XmlDocument xmldoc = new XmlDocument();
                //加载xml文件
                xmldoc.Load(@"E:\Test\Test\tt.xml");
                //查找到ID=2的节点,删除book 下面的子节点,最后会留下一个空的<book></book>
                XmlNodeList nodelist = xmldoc.SelectNodes("//Books/Book[@ID=3]");//需了解xpath
                foreach (XmlNode n in nodelist)
                {
                    XmlElement xe = (XmlElement)n;//XmlElement继承XmlNode
                    //将属性 修改为13
                    xe.SetAttribute("ID","13");
                    //查找title节点
                    XmlNode nn = n.SelectSingleNode("Title");
                    nn.InnerText = "C#从入门到精通";
                }
                //保存
                xmldoc.Save(@"E:\Test\Test\tt.xml");
            }

    操作节点还有CDATA

    需要操作的XML文件:

    <Info>
    <Link><![CDATA[<a href="http://www.52taiqiu.com">52台球网</a>]]></Link>
    </Info>

    修改Link中的值

    XmlDocument xmldoc = new XmlDocument();
    //加载xml文件
    xmldoc.Load(@"E:\Test\Test\测试.xml");
    XmlNode nameNode = xmldoc.SelectSingleNode("/Info/Link");
    nameNode.InnerText = "";//如果是修改,需要把原先的值清空。
    nameNode.AppendChild(xmldoc.CreateCDataSection("<a href=\"http://www.52taiqiu.com\">52台球网</a>"));
    xmldoc.Save(@"E:\Test\Test\测试.xml");

  • 相关阅读:
    linux网络服务
    linux支持中文
    quartz-2实例
    makefile入门
    form 组件
    jquery +ajax 上传加预览
    iframe 加form提交数据
    笔记,ajax,事件绑定,序列化
    KindEditor
    统计图表
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2345546.html
Copyright © 2020-2023  润新知