`

C# 生成 添加 修改 删除 XML节点操作

阅读更多
    XmlDocument xmldoc;
    XmlNode xmlnode;
    XmlElement xmlelem;
    protected void Page_Load(object sender, EventArgs e)
    {
        //创建文件和添加节点
        xmldoc = new XmlDocument();
        //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
        XmlDeclaration xmldecl;
        xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", 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", "李赞红");//设置该节点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"));


        //添加节点
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));
        XmlNode roots = xmlDoc.SelectSingleNode("Employees");//查找<Employees>

        XmlElement xe2 = xmlDoc.CreateElement("Node");//创建一个<Node>节点
        xe2.SetAttribute("genre", "张三");//设置该节点genre属性
        xe2.SetAttribute("ISBN", "1-1111-1");//设置该节点ISBN属性

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

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



        //修改节点属性和内容
        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)//遍历
                {
                    xe2 = (XmlElement)xn1;//转换类型
                    if (xe2.Name == "author")//如果找到
                    {
                        xe2.InnerText = "亚胜";//则修改
                    }
                }
            }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));//保存。

        //添加节点
        xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));

        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"));



        //删除属性和子节点
        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)//遍历
            {
                xe2 = (XmlElement)xn1;//转换类型
                if (xe2.Name == "flag")//如果找到
                {
                    xe.RemoveChild(xe2);//则删除
                }
            }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));

        //删除节点
        xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("data.xml"));
        XmlNode rootq = xmlDoc.SelectSingleNode("Employees");
        xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
        for (int i = 0; i < xnl.Count; i++)
        {
            XmlElement xe = (XmlElement)xnl.Item(i);
            if (xe.GetAttribute("ISBN") == "1-1111-10")
            {
                rootq.RemoveChild(xe);
                if (i < xnl.Count) i = i - 1;
            }
        }
        xmlDoc.Save(Server.MapPath("data.xml"));


        //读取节点
        XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("data.xml"));
        //根据属性查找节点
        //XmlNode xns = doc.SelectSingleNode("/Employees/Node[@ISBN='2-3631-4']");
        //根据子节点内容
        XmlNode xns = doc.SelectSingleNode("Employees/Node/author[text()='候捷']");
        //根据多层节点查找
        //objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")


        xnl = xns.ChildNodes;
        foreach (XmlNode xnf in xnl)
        {
           // XmlElement xe = (XmlElement)xnf;
            //Response.Write(xe.GetAttribute("ISBN"));//显示属性值

           // XmlNodeList xnf1 = xe.ChildNodes;
           // foreach (XmlNode xn2 in xnf1)
           // {
            Response.Write(xnf.Name + ":" + xnf.InnerText);//显示子节点点文本
            //}
            Response.Write("<br>");
        }

        //XmlNode objNode = doc.SelectSingleNode("Employees/Node[ISBN='2-3631-4']");


    }
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    C#动态加载XML文件,并更改节点属性值

    在这个过程中,理解XPath(XML路径语言)也可以帮助更高效地定位XML节点。XPath是用于在XML文档中查找信息的语言,尽管在C#中不是必需的,但它提供了一种强大而灵活的方式来定位节点。 总之,C#通过`XDocument`类...

    C#读写XML文件,支持多层节点

    这个小测试程序的核心功能就是基于这些基本操作实现的,它不需要依赖任何第三方库,提供了便捷的方式处理多层XML节点,特别适合用于程序配置文件的读写。在实际项目中,为了代码的可维护性和健壮性,建议封装成类或...

    c#操作XML 读取、生成,WEBSERVICE接口

    本教程将深入探讨如何在C#中操作XML,包括读取和生成XML文档,并利用Web Service接口进行数据传输。 1. **C#操作XML:读取** 在C#中,我们可以使用`System.Xml`命名空间中的类来处理XML文档。其中,`XmlDocument`...

    c#实现对XML(OPML)文档动态生成树型菜单及对相应节点的操作维护

    本篇文章将深入探讨如何使用C#来处理OPML文档,实现动态生成树型菜单以及对相应节点的操作维护。 首先,要处理OPML文档,我们需要了解其基本结构。OPML文档由一系列的、和元素组成。其中包含文档元信息,则包含了...

    Xml文件自动生成C# Class类

    这样的工具通常会根据XML节点的层次结构生成嵌套的类,并考虑命名空间、属性注解等细节。 4. **使用生成的类**:一旦生成了C#类,我们就可以在代码中实例化这些类,然后使用XML序列化器将XML数据填充到对象中,或者...

    c# 循环生成XML方法

    本文将深入探讨如何在C#中通过循环生成XML文档,这一过程对于批量处理数据或动态生成配置文件等场景尤为关键。 ### 核心知识点:C#中循环生成XML文档 #### 1. 初始化XML文档 在C#中,生成XML文档的第一步是创建一...

    C# 对 XMl操作例子

    总的来说,C#的`XmlDocument`类提供了一种强大且灵活的方式来处理XML数据,允许开发者进行深度的数据操作,包括读取、修改、添加和删除XML节点。在实际的开发工作中,理解并熟练掌握这些操作对于处理XML数据至关重要...

    Xml的添加操作与节点的描述

    总之,XML的添加操作和节点描述是XML处理的基础,而Repeater展示则是数据绑定的关键技术,结合XmlReader这样的高效读取工具,可以实现灵活、高效的XML数据处理和展示。在实际开发中,熟练运用这些知识可以提高代码的...

    C#编写的模拟Rss 阅读器操作XML文件数据节点存储

    在C#中,XML文件的操作主要依赖于.NET框架提供的System.Xml命名空间,它包含了一系列类库用于解析、创建和修改XML文档。 XML文件结构清晰,数据以节点的形式组织,包括元素(Element)、属性(Attribute)、文本...

    用C#快速读取XML文件,并遍历

    4. **遍历XML节点**:遍历XML文件通常涉及到foreach循环,通过XmlNode的ChildNodes属性访问子节点,或者通过NextSibling和PreviousSibling属性访问相邻节点。 描述中的“速度比用delphi读取并遍历XML快的不只几倍!...

    C#通过DataSet读写xml文件的方法

    //生成Xml文件 ds.WriteXml(Server.MapPath(xml/song_bak.xml)); 希望本文所述对大家的C#程序设计有所帮助。 您可能感兴趣的文章:C# 创建,读取,写入XML文件C#操作读取、写入XML文档的实用方法C#实现xml文件的读取...

    基于C#的XML可视化界面编辑系统

    用户可以通过添加、删除、移动节点来操作XML结构。此外,属性编辑器允许用户编辑元素的属性值。 3. **验证与错误处理**:为了确保生成的XML文档符合规范,系统集成XML Schema Definition (XSD) 支持,可以加载XSD...

    C# XML 如何修改指定项

    总之,C#中修改XML文档涉及的主要步骤包括加载XML、找到要修改的节点、进行修改以及保存修改。`XmlDocument`类提供了这些功能,而XPath则帮助我们高效地定位到目标节点。在实际编程中,根据项目需求和团队规范选择...

    C#操作xml文件生成实例源码

    首先,生成XML文件的基本步骤涉及创建一个`XmlDocument`对象,然后通过添加节点来构建XML结构。以下是一个简单的C#代码示例,展示了如何生成XML文件: ```csharp using System; using System.Xml; public class ...

    C#Xml自动创建,编辑节点

    本教程将深入探讨如何使用C#来自动创建和编辑XML文件,包括XML文件的生成以及对XML节点的操作。 首先,要创建一个XML文件,可以使用System.Xml命名空间中的XmlDocument类。以下是一个简单的示例,展示如何创建一个...

    C#动态生成XML

    本篇文章将深入探讨如何在C#中动态生成XML文件,特别是通过DataTable对象来实现这一过程。 首先,我们来看一下基本的XML生成方法,这通常涉及到使用System.Xml命名空间中的类。其中,XmlDocument类是最基础的XML...

    C# 读取文件名构造XML文件并生成Tree

    文件名可以作为XML节点的值,而文件路径可能作为属性存储。例如: ```csharp XDocument doc = new XDocument( new XElement("Files", from file in Directory.GetFiles("path_to_directory") select new ...

    Axis2 SOAP XML报文节点首字母小写转大写,节点命名空间前缀添加与剔除(JAVA)

    在处理SOAP XML报文时,我们可能遇到一些规范性问题,例如节点首字母大小写的转换,以及节点命名空间前缀的添加与剔除。本文将深入探讨这些问题,并提供相应的解决方案。 首先,关于SOAP XML报文中的节点首字母大小...

    Csharp读写XML文件

    本教程将深入讲解如何使用C#进行XML文件的读写操作,包括增加、删除、修改和查找元素。 首先,我们要了解C#中的System.Xml命名空间,它提供了处理XML文档的各种类。主要涉及以下类: 1. **XmlDocument**:这是处理...

    C# 3层架构操作XML文件(增删改查)

    5. **删除XML**:删除节点通常需要先找到要删除的节点,然后使用`RemoveChild`方法。 接下来,我们讨论3层架构。三层架构是一种软件设计模式,包括: - **表现层(UI)**:用户与系统交互的界面,负责接收用户输入...

Global site tag (gtag.js) - Google Analytics