使用C#代码读写XML文件

使用C#代码读写XML文件

一、创建XML文件

  private void CreateXml()
    {
        //创建XML文档实例
        XmlDocument xmlDoc = new XmlDocument();

        //创建根节点
        XmlElement root = xmlDoc.CreateElement("config");

        //创建子节点
        XmlElement _child1 = xmlDoc.CreateElement("name1");
        //设置节点中的数值
        _child1.InnerText = "添加的内容1";
        root.AppendChild(_child1);

        //创建子节点
        XmlElement _child2 = xmlDoc.CreateElement("name2");
        //设置节点中的数值
        _child2.InnerText = "添加的内容2";
        root.AppendChild(_child2);

        xmlDoc.AppendChild(root);

        //把XML文件保存至本地
        xmlDoc.Save(XmlPath);
    }

new 一个XmlDocument 对象之后,再调用Save方法, 这样就创建了一个空的XML文件了。然后就是在XML中添加内容,创建的XmlElement通过AppendChild添加到XML中。同理,你也可在子节点下继续创建子节点,可以一直这样添加下去(可以,但是没必要创建太多)。

运行结果:

<config>
  <name1>添加的内容1</name1>
  <name2>添加的内容2</name2>
</config>

如果你想在你的XML文件中通过代码插入备注,你可以这样写:

        //创建注释
        XmlComment _com = xmlDoc.CreateComment("注释内容");
        root.AppendChild(_com);

运行结果:

<config>
  <!--注释内容-->
  <name1>添加的内容1</name1>
  <name2>添加的内容2</name2>
</config>

二、添加XML元素

   private void AddXML()
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(XmlPath);
        XmlNode root = xmlDoc.SelectSingleNode("config");
        //新加节点
        XmlElement elmNew = xmlDoc.CreateElement("name3");
        elmNew.InnerText = "新添加的内容";
        root.AppendChild(elmNew);

        xmlDoc.Save(XmlPath);
    }

添加元素也是先获得XmlDocument对象,只是需要同过Load方法读取已经有的XML文件,再使用SelectSingleNode方法找到root节点,新增子节点和创建子节点是一样的,最后将子节点添加到根节点下,然后保存XML文件。

运行结果:

<config>
  <!--注释内容-->
  <name1>添加的内容1</name1>
  <name2>添加的内容2</name2>
  <name3>添加的内容</name3>
</config>

三、XML文件数据的读取

 Dictionary<string, string> _testDic = new Dictionary<string, string>();
    private void ReadXML()
    {
        _testDic.Clear();
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(XmlPath);
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("config").ChildNodes;
        //遍历每一个子节点 
        foreach (var xe in nodeList)
        {
            //过滤注释
            XmlElement _temp = null;
            if (xe is XmlElement)
            {
                _temp = xe as XmlElement;
            }
            else
            {
                continue;
            }
            if (_testDic.ContainsKey(_temp.Name))
            {
                continue;
            }
            _testDic.Add(_temp.Name, _temp.InnerText);
        }
        LogXML();
    }

    private void LogXML()
    {
        foreach (var item in _testDic)
        {
            Debug.Log(string.Format("key:{0},value:{1}",item.Key,item.Value));
        }
    }

读取XML的内容是根据你创建的XML文件所决定的,你怎样创建数据结构的,就怎么取数据。我想要存取的数据比较简单,所以就用字典来存数据了。另外,如果你的XML文件里面有注释,记得判断类型。

运行结果:

代码:https://download.csdn.net/download/qq_33461689/11869989

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# XML文件读写操作源码,以及如何调用,注释详解,有任何问题请留言, 以下截取xml文件和部分调用代码段: * ++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="utf-8" standalone="no"?> <!--TestPlugins的信息--> <!--DataPlugins的信息--> * ++++++++++++++++++++++++++++ xml xl = new xml(); xl.XMLWriteRootNode("info"); //XmlElement Eml1 = xl.XMLReadNode("",0); //XmlElement Eml2 = xl.XMLReadNode("DataPlugins", 1); //XmlElement Eml4 = xl.XMLReadNode("DeviceInfo", 2); // TestPlugins XmlElement testPlugins = xl.XMLCreateNode("TestPlugins", null, null); xl.XMLInsertNode("info", 0, "TestPlugins的信息", testPlugins); // FixturePlugin XmlElement fixturePlugin = xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "FixturePlugin" } }); xl.XMLInsertNode(testPlugins.LocalName, 1, null, fixturePlugin); // DUTPlugin XmlElement DUTPlugin = (XmlElement)fixturePlugin.CloneNode(true);// xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "DUTPlugin" } }); DUTPlugin.SetAttribute("Type", "DUTPlugin"); xl.XMLInsertNode(testPlugins.LocalName, 1, null, DUTPlugin); // Agilent34461APlugin XmlElement Agilent34461APlugin = xl.XMLCreateNode("TestPlugin", null, new Dictionary() { { "Type", "Agilent34461APlugin" } }); xl.XMLInsertNode(testPlugins.LocalName, 1, null, Agilent34461APlugin); // ================================== // DataPlugins XmlElement dataPlugins = xl.XMLCreateNode("DataPlugins", null, null); xl.XMLInsertNode("info", 0, "DataPlugins的信息", dataPlugins); // CSVLogPlugin XmlElement csvlogPlugin = xl.XMLCreateNode("DataPlugin", null, new Dictionary() { { "Type", "CSVLogPlugin" } }); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, csvlogPlugin); XmlElement uartlogPlugin = (XmlElement)csvlogPlugin.CloneNode(true); uartlogPlugin.SetAttribute("Type", "UartLogPlugin"); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, uartlogPlugin); XmlElement testlogPlugin = (XmlElement)csvlogPlugin.CloneNode(true); testlogPlugin.SetAttribute("Type", "TestLogPlugin"); xl.XMLInsertNode(dataPlugins.LocalName, 1, null, testlogPlugin); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值