C# 读写XML

XML:

代码:

复制代码
       //实例化
            XmlDocument xmldc = new XmlDocument();

            //加载xml文件,参数是路径。
            xmldc.Load("C:/Users/Desktop/1.xml");

            //获取根元素Company的节点列表
            XmlNodeList nodelist = xmldc.SelectSingleNode("Company").ChildNodes;

            //1、查询已知绝对路径的节点(集)
            //结果:获取了3个Employee节点
            XmlNodeList objNodeList = xmldc.SelectNodes("Company/Department/Employee");

            //2、返回第一个节点   
            //结果:3个节点中,只会取第一条
            XmlNode objNode = xmldc.SelectSingleNode("/Company/Department/Employee");

            //3、查询已知相对路径的节点(集) 
            //结果:第一个Department节点下的数据
            objNode = xmldc.SelectSingleNode("Company/Department");
            //结果:objNodeList未获取到数据(错误的)
            objNodeList = xmldc.SelectNodes("../Department");

            //4、查询已知元素名的节点(集)
            //在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。
            //结果:获取了3个Employee节点
            objNodeList = xmldc.SelectNodes("Company//Employee");

            //5、查询属性(attribute)节点   
            //以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可
            //结果:返回的Employee的属性带有Id的2条数据
            objNodeList = xmldc.SelectNodes("Company/Department/Employee/@Id");
            //结果:返回的属性带有Id的3条数据(指:Employee节点的2条,Department_Name1条)
            objNodeList = xmldc.SelectNodes("Company//@Id");

            //6、查询Text节点  使用text()来获取Text节点
            //结果:返回的财务部数据
            objNode = xmldc.SelectSingleNode("Company/Department/Department_Name/text()");

            //7、查询特定条件的节点  使用[]符号来查询特定条件的节点。
            //结果:返回李四的数据
            objNode = xmldc.SelectSingleNode("Company/Department/Employee[@Id='1']");
            //结果:返回王五的数据
            objNode = xmldc.SelectSingleNode("//Employee[@Id='2']");
            //结果:返回李四的数据
            objNode = xmldc.SelectSingleNode("Company/Department/Employee/Name[text()='李四']");
            //结果:返回财务部数据
            objNode = xmldc.SelectSingleNode("Company/Department[Employee/@Id='2']/Department_Name");

            //8、查询多重模式的节点
            //使用 | 符号可以获得多重模式的节点。
            //结果:获取到4条,分别是Department_Name2条,Manager2条。
            objNodeList = xmldc.SelectNodes("Company/Department/Department_Name | Company/Department/Manager");

            //9、查询任意子节点 使用*符号可以返回当前节点的所有子节点。
            //结果:获取Manager2条。
            objNodeList = xmldc.SelectNodes("Company/*/Manager");
            //结果:返回的InnerText里,有所有的xml内容
            objNodeList = xmldc.ChildNodes;

            //XML数据的编辑
            //增加一个元素的属性(attribute)节点
            //结果:把值加到财务部里了。
            XmlAttribute objNodeAttr = xmldc.CreateAttribute("id");
            objNodeAttr.InnerText = "101";
            objNode.Attributes.Append(objNodeAttr);

            //删除一个元素的属性
            objNode.Attributes.Remove(objNodeAttr);
       //保存该XML文件
xmldc.Save("C:/Users/Desktop/1.xml");
//增加一个子元素(Element)(错误的,以后改) //objNodeChild = xmldc.CreateElement(Nothing, "ID", Nothing);
复制代码

 

posted @     阅读(394)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示