zoukankan      html  css  js  c++  java
  • C#操作xml文件

    上次操作这东西还是第一个项目里面,为了读取xml文件里面的大量的数据操作这东西。

    现在突然要写这东西虽然很简单,还是有点生疏,写个demo以备查阅。后面再linq to xml就简单很多。

    使用的xml文件demo.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <connectionstrings>
      <connectionstring id="connstr1">
        <serverAddress>127.0.0.1</serverAddress>
        <dataBase>test</dataBase>
        <userId>sa</userId>
        <password>111222</password>
      </connectionstring>
      <connectionstring id="connstr2">
        <serverAddress>127.0.0.1</serverAddress>
        <dataBase>test</dataBase>
        <userId>sa</userId>
        <password>111222</password>
      </connectionstring>
    </connectionstrings>

    然后是操作xml的类XmlOperatorDemo.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    
    namespace TestDemo
    {
        public class XmlOperateDemo
        {
            readonly XmlDocument xmlDoc=new XmlDocument();
            private readonly string xmlPath = "";
            public XmlOperateDemo(string xmlpath)
            {
                xmlDoc.Load(xmlpath);
                xmlPath = xmlpath;
            }
    
            public void GetNodeValue()
            {
                var list = xmlDoc.GetElementsByTagName("connectionstring");//获取节点列表
                foreach (XmlElement xe in list)
                {
                    Console.WriteLine(xe.GetAttribute("id")+":");//获取属性
                    Console.WriteLine(xe.InnerXml);//节点内容
                    XmlElement address = (XmlElement)xe.SelectSingleNode("serverAddress");//获取节点
                    Console.WriteLine("serverAddress:" + address.InnerText);
                }
    
            }
    
            public void SetNodeValue()
            {
                var nodecount = xmlDoc.GetElementsByTagName("connectionstring").Count+1;
                var connstr3 = xmlDoc.CreateElement("connectionstring");
                connstr3.SetAttribute("id", "connstr" + nodecount);//设置属性
                XmlElement serverAddress = xmlDoc.CreateElement("serverAddress");
                serverAddress.InnerText = "127.0.0.1";//设置文本内容
                XmlElement dataBase = xmlDoc.CreateElement("dataBase");
                dataBase.InnerText = "test";
                XmlElement userId = xmlDoc.CreateElement("userId");
                userId.InnerText = "sa";
                XmlElement password = xmlDoc.CreateElement("password");
                password.InnerText = "111222";
                connstr3.AppendChild(serverAddress);
                connstr3.AppendChild(dataBase);
                connstr3.AppendChild(userId);
                connstr3.AppendChild(password);
               
                Console.WriteLine("---new connstr---:");
                Console.WriteLine(connstr3.InnerXml);
                var root= xmlDoc.SelectSingleNode("connectionstrings");//根节点
                root.AppendChild(connstr3);// 添加节点
                xmlDoc.Save(xmlPath);//保存
                Console.WriteLine("after nodeadding:");
                GetNodeValue();
    
    
            }
    
            public void DeleteNode()
            {
                Console.WriteLine("before delete-----------------------:");
                GetNodeValue();
                var root = xmlDoc.SelectSingleNode("connectionstrings");
                var node=root.SelectSingleNode("connectionstring");
           //删除节点 root.RemoveChild(node); xmlDoc.Save(xmlPath); Console.WriteLine(
    "after delete-----------------------:"); GetNodeValue(); } } }

    测试主方法:

     static void Main(string[] args)
            {
                var xmldemo=new XmlOperateDemo(@"D:\visual studio\TestDemo\TestDemo\demo.xml");
                //xmldemo.GetNodeValue();
                //xmldemo.SetNodeValue();
                xmldemo.DeleteNode();
    
                Console.Read();
            }
  • 相关阅读:
    [SCOI2015]国旗计划
    [SCOI2015]小凸玩矩阵
    点分治复习笔记
    [HNOI2014]米特运输
    [HNOI2015]接水果
    [HEOI2016/TJOI2016]游戏
    为什么验证集的loss会小于训练集的loss?
    转载GPU并行计算
    深度学习图像标注工具汇总(转载)
    你理解了吗?
  • 原文地址:https://www.cnblogs.com/wancy86/p/xml_operate.html
Copyright © 2011-2022 走看看