c#对XML文件的生成-修改-添加-删除-读取等操作

原文地址:http://blog.sina.com.cn/s/blog_494df4bf01019nxf.html

 

XML是一种可扩展标记语言,在开发c#程序过程中经常会使用到,下面几段代码是我平时在开发c#程序中整理出来的对XML文件的基本操作代码,其中包含了“创建生成XML文件”“向已有XML文件中插入新节点”“修改已有XML文件中的节点信息和属性”“删除XML文件中的节点属性和信息”“读取XML文件中的数据”,在c#中可对XML文件操作的方法有很多,这只是我个人了解的其中一种,代码只写了基本的处理流程,大家可以根据需要再进行深加工处理。


        /// <summary>创建XML

        /// </summary>

        public void CreateXML()

        {

            XmlDocument xmlDoc = new XmlDocument();


            XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);

            xmlDoc.A(xmlDec);//设置文档属性


            XmlElement xmlelem = xmlDoc.createElement_x("RootNode");//添加根节点

            xmlDoc.A(xmlelem);


            XmlNode root = xmlDoc.SelectSingleNode("RootNode");//查找根节点


            XmlElement xe_parent = xmlDoc.createElement_x("Parent");//创建一个父节点    

            xe_parent.SetAttribute("name", "n1");//设置该节点属性(自定义,可不设置)    


            XmlElement xe_child1 = xmlDoc.createElement_x("child1");//创建第一个子节点  

            xe_child1.InnerText = "abc";//设置文本节点     

            xe_parent.A(xe_child1);//添加到父节点    


            XmlElement xe_child2 = xmlDoc.createElement_x("child2");//创建第二个子节点     

            xe_child2.InnerText = "def";//设置文本节点  

            xe_parent.A(xe_child2);//添加到父节点 


            //创建N个子节点

            //......


            root.A(xe_parent);//添加到根节点 


            xmlDoc.Save(@"E:\test.xml");//设置一个保存路径        

        }


        /// <summary>向XML中插入新节点

        /// </summary>

        public void AddXMLNode()

        {

            XmlDocument xmlDoc = new XmlDocument();


            xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件


            XmlNode root = xmlDoc.SelectSingleNode("RootNode");//查找根节点RootNode


            XmlElement xe_parent = xmlDoc.createElement_x("Parent");//创建一个父节点    

            xe_parent.SetAttribute("name", "abc");//设置该节点属性(自定义,可不设置)    


            XmlElement xe_child1 = xmlDoc.createElement_x("child1");//创建第一个子节点  

            xe_child1.InnerText = "abc";//设置文本节点     

            xe_parent.A(xe_child1);//添加到父节点    


            XmlElement xe_child2 = xmlDoc.createElement_x("child2");//创建第二个子节点     

            xe_child2.InnerText = "def";//设置文本节点  

            xe_parent.A(xe_child2);//添加到父节点 


            //创建N个子节点

            //......


            root.A(xe_parent);//添加节点到根节点RootNode中


            xmlDoc.Save(@"E:\test.xml");//保存

        }


        /// <summary>修改XML中某节点的信息

        /// </summary>

        public void UpdateXMLNodeInfo()

        {

            XmlDocument xmlDoc = new XmlDocument();


            xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件


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


            foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点

            {

                XmlElement xmlDoc2 = (XmlElement)xn;//将根节点的子节点类型转换为XmlElement类型

                //xmlDoc2.GetAttribute("属性名")可取根节点的子节点属性值

                //xmlDoc2.SetAttribute("属性名","属性值")可修改根节点的子节点属性值

                //xmlDoc2.ChildNodes;可继续取根节点的子节点下的所有子节点

                if (xmlDoc2.GetAttribute("name") == "abc")//找到相应节点 

                {

                    XmlNodeList childNodeList = xmlDoc2.ChildNodes;//继续获取子节点的所有子节点


                    foreach (XmlNode xn2 in childNodeList)//遍历子节点的所有子节点      

                    {

                        XmlElement xmlDoc3 = (XmlElement)xn2;//转换类型


                        if (xmlDoc3.Name == "child1")//找到相应节点       

                        {

                            xmlDoc3.InnerText = "11111111";//修改相应节点的值         

                            break;

                        }

                    }

                    break;

                }

            }

            xmlDoc.Save(@"E:\test.xml");//保存

        }


        /// <summary>删除XML中某个节点的属性或信息

        /// </summary>

        public void DelXMLNodeInfo()

        {

            XmlDocument xmlDoc = new XmlDocument();


            xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件


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


            foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点

            {

                XmlElement xmlDoc2 = (XmlElement)xn;//转换类型


                if (xmlDoc2.GetAttribute("name") == "abc")//找到相应节点  

                {

                    xmlDoc2.RemoveAttribute("name");//删除该节点的name属性      

                }

                else if (xmlDoc2.GetAttribute("name") == "def")      

                {

                    xmlDoc2.RemoveAll();//删除该节点的全部内容      

                }     

            }

            xmlDoc.Save(@"E:\test.xml");

        }


        /// <summary>读取XML文件中的数据

        /// </summary>

        public void GetXMLInfo()

        {

            XmlDocument xmlDoc = new XmlDocument();


            xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件


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


            foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点

            {

                XmlElement xmlDoc2 = (XmlElement)xn;//转换类型

                Console.WriteLine(xmlDoc2.GetAttribute("name"));//打印根节点的所有子节点的属性值  

                XmlNodeList nodeList2 = xmlDoc2.ChildNodes;//获取子节点下的所有子节点

                foreach (XmlNode xn2 in nodeList2)//遍历子节点下的所有子节点

                {

                    Console.WriteLine(xn2.InnerText);//打印子节点下的所有子节点文本信息

                }

            }

        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,你可以使用 `Microsoft.Office.Interop.Excel` 程序集中的 `Workbook` 和 `Worksheet` 类来读取 Excel 文件中的数据,然后将其转换为 XML 格式并保存为文件。 以下是一个简单的示例代码,演示如何将 Excel 文件转换为 XML 文件: ```csharp using System.Xml; using Microsoft.Office.Interop.Excel; // 创建一个新的Excel应用程序实例 Application excel = new Application(); Workbook workbook = excel.Workbooks.Open(@"C:\path\to\workbook.xlsx"); Worksheet sheet = workbook.Sheets[1]; // 创建一个新的XmlDocument对象 XmlDocument xmlDocument = new XmlDocument(); // 创建根元素 XmlElement rootElement = xmlDocument.CreateElement("Workbook"); xmlDocument.AppendChild(rootElement); // 逐行读取Excel数据并将其转换为Xml元素 for (int i = 1; i <= sheet.UsedRange.Rows.Count; i++) { XmlElement rowElement = xmlDocument.CreateElement("Row"); rootElement.AppendChild(rowElement); for (int j = 1; j <= sheet.UsedRange.Columns.Count; j++) { object cellValue = sheet.Cells[i, j].Value2; XmlElement cellElement = xmlDocument.CreateElement("Cell"); cellElement.InnerText = cellValue.ToString(); rowElement.AppendChild(cellElement); } } // 保存Xml文件 xmlDocument.Save(@"C:\path\to\output.xml"); // 关闭Excel应用程序和工作簿 workbook.Close(false); excel.Quit(); ``` 在上面的示例代码中,我们首先使用 `Microsoft.Office.Interop.Excel` 程序集创建了一个新的 Excel 应用程序实例,并打开了一个工作簿。然后,我们选择了工作簿中的第一个工作表,并使用 `UsedRange` 属性获取其使用的范围。 接下来,我们创建了一个新的 `XmlDocument` 对象,并为其添加了一个根元素。然后,我们使用一个循环逐行读取 Excel 文件中的数据,并将其转换为 XML 元素。最后,我们保存了 XML 文件,并关闭了 Excel 应用程序和工作簿。 请注意,上述示例使用了 `Value2` 属性来获取单元格的值。这是因为 `Value2` 属性返回一个未经格式化的值,可以更快地读取和处理数据。如果需要,你也可以使用 `Value` 属性来获取单元格的格式化值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值