文档章节

『C#基础』XML文件的读与写

灰大羊
 灰大羊
发布于 2016/07/05 10:12
字数 653
阅读 4
收藏 0

几点说明

  1. 由于手头正好有一个程序上有现成的读写XML的代码,所以就近研究一下~
  2. 代码的版本是.NET 1.1 的~
  3. 使用到的命名空间:
    1. System.Xml
  4. 读取XML步骤
    1. 实例化一个XmlDocument对象
    2. 使用XmlDocument.Load(文件目录+文件名称)方法将XML文件读到内存中
    3. 使用foreach迭代与XmlElement对象来遍历已经读到内存中的XmlDocument.DocumentElement
    4. 使用XmlElement[Key].InnerText来读取对应Key元素的值
  5. 写入XML步骤
    1. 将要写入的XML文件读入内存
    2. 使用迭代来检查一下XML中是否有想要写入的节点
    3. 如果有,则使用XmlElement[Key].InnerText = Value
    4. 如果没有,则使用XmlElement Key = XmlDocument.CreateElement("Key")来创建一个Xml节点
      1. 使用XmlElement Child_Key = XmlDocument.CreateElement("Child_Key")再创建一个Xml节点
      2. 使用Child_Key.InnerText = "Value";来赋节点值
      3. 使用Key.AppendChild(Child_Key)来给对应的Key添加一个子节点
    5. 使用System.IO.FileInfo info = new System.IO.FileInfo(路径+Xml文件名)来获取文件信息
      1. 使用info.Attributes来获取文件的属性
      2. 使用info.Attributes == System.IO.FileAttributes.ReadOnly来确定文件是否是只读
      3. 如果是只读,则可以会用System.IO.FileAttributes.Normal来恢复文件初始属性,以解掉Xml文件的只读属性
    6. 使用XmlDocument.Save(路径+Xml文件名);来将之前写入数据的XML保存

 

样例界面

image

image

image

参考代码

Data Binding Example - CSusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml;
using System.IO;

namespace csdemo2008.Wpf_Spring.XmlWindow
{
    /// <summary>
    /// XmlWindow.xaml 的交互逻辑
    /// </summary>
    public partial class XmlWindow : Window
    {
        public XmlWindow()
        {
            InitializeComponent();
        }

        private void btnClose_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        XmlDocument doc = new XmlDocument();
        // 写入XML文件
        private void btnWrite_Click(object sender, RoutedEventArgs e)
        {
            string nodeText = tbNode.Text.Trim();
            try
            {
                doc.Load("God.xml");
            }
            catch
            {
                XmlTextWriter writer = new XmlTextWriter("God.xml", Encoding.UTF8);
                writer.WriteStartElement("rootNode");
                writer.WriteStartElement("innerNode");
                writer.WriteAttributeString("name", "InnerNode");
                writer.WriteStartElement("childNode");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.Close();

                doc.Load("God.xml");
            }

            bool isExist = false;
            foreach (XmlElement element in doc.DocumentElement)
            {
                // 这里读入的element是doc的第一级子节点,也就是innerNode
                if (element.Name == "innerNode" && element.HasChildNodes)
                {
                    foreach (XmlNode node in element.ChildNodes)
                    {
                        if (node.Name == "childNode" && node.InnerText != nodeText)
                        {
                            node.InnerText = nodeText;
                        }
                        isExist = true;
                    }
                }
                else
                {
                    doc.RemoveChild(element);
                }
            }

            if (isExist == false)
            {
                XmlElement elementRoot = doc.CreateElement("innerNode");
                XmlElement elementInner = doc.CreateElement("childNode");

                elementInner.InnerText = "『峻之岭峰』- http://www.cnblogs.com/sitemanager/";
                elementRoot.AppendChild(elementInner);

                // 注意,这里是加在RootElement之内的!
                doc.DocumentElement.AppendChild(elementRoot);
            }

            FileInfo info = new FileInfo("God.xml");
            if (info.Attributes == FileAttributes.ReadOnly)
            {
                info.Attributes = FileAttributes.Normal;
            }
            doc.Save("God.xml");
            info.Attributes = FileAttributes.ReadOnly;

            tbNode.Text = null;
        }

        // 读取XML文件
        private void btnRead_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                doc.Load("God.xml");
            }
            catch
            {
                MessageBox.Show("没有这个XML文件!请先点击写入文件来创建它!");
            }

            if (tbNode.Text.Trim() == "")
            {
                tblDisplay.Text += doc.InnerXml + "\n";
            }
            else
            {
                foreach (XmlElement element in doc.DocumentElement)
                {
                    if (element.HasChildNodes)
                    {
                        foreach (XmlNode node in element.ChildNodes)
                        {
                            if (node.InnerText == tbNode.Text.Trim())
                            {
                                tblDisplay.Text += node.InnerText + "\n";
                            }
                            else
                            {
                                tblDisplay.Text += "没有对应节点!\n";
                            }
                        }
                    }
                    else
                    {
                        tblDisplay.Text += element.InnerXml + "\n";
                    }
                }
            }
            tbNode.Text = null;
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            tbNode.Text = null;
            tblDisplay.Text = null;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FileInfo info = new FileInfo("God.xml");
                info.Attributes = FileAttributes.Normal;
                info.Delete();
            }
            catch(Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
        }
    }
}

© 著作权归作者所有

灰大羊
粉丝 4
博文 96
码字总数 95147
作品 0
浦东
项目经理
私信 提问
python文件读写(一)-txt, log, json, csv, xml文件

1.概述 在平时自动化测试工作中,经常会用python对一些文件进行读写操作。其中使用最多的文件格式,就是txt, log, json, csv, xml, zip, tar, gz, rar, excel,这十种文件格式。 其中txt, lo...

Godric_wsw
2018/07/09
0
0
abel533/EasyXls

#EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 ##EasyXls特点 支持xls转换为对象 支持xls转换为对象 支持转换为xls 支持转换...

abel533
2014/09/12
0
0
快捷方便的Excel导入导出工具 Easy-Xls 1.0 版本发布

EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。 JAXB处理中文xml...

Liuzh_533
2014/10/09
7.5K
21
快捷方便的Excel导入导出工具--Easy-Xls

EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。 JAXB处理中文xml...

Liuzh_533
2013/04/12
5.5K
0
opencv学习(十四)XML//YAML的读取和写入(同理可用txt,doc替代)//涉及FileStorage()//读写符号//FileNodeIterator()得到节点

xml,yaml介绍 如何使用 步骤一,FileStorage()打开(读/写前的准备,定义) 步骤二,读写操作函数(符号) 步骤三,vector/maps类型输入输出,FileNodeIterator读取字符串的得到节点 步骤四,...

露一手吧
2018/04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

iOS苹果应用IPA一键签名工具及重签教程

开心签名工具,是一款跨平台ios签名和重签名工具。 同时支持在windows、linux、mac运行,数据同步,方便使用及管理! 开心重签名工具官网 功能特点 1、支持图形界面及命令行重签(部署到服务...

tintong
30分钟前
5
0
2.4G有源卡核心芯片供应商

有源2.4G RFID的防盗标签,在与无源标签相比较,通信距离远,通信时效高。我司的SI24R2E这颗芯片专门为2.4G有源标签而设计,具有低功耗,发送距离远,厂商设计简单等优势;广泛应用于现在城市...

文刀石
35分钟前
2
0
设置Ubuntu16.04启动为命令行界面

1. 修改/etc/default/grub文件,将GRUB_CMDLINE_LINUX_DEFAULT设置成”quiet splash 3” 2. 使用命令update-grub使得在/boot下重新生成GRUB2配置文件。 3. 重启...

JosiahMg
36分钟前
3
0
C++基础知识点

计算机语言 计算机不能理解高级语言,只能理解机器语言,必须要将高级语言翻译成机器语言,翻译的方式有两种,一种是编译,一种是解释 解释型语言,在运行程序时进行翻译,每个语句在执行时逐...

大瑞清_liurq
42分钟前
4
0
EFCore 多条数据更新不能同时savechanges()的解决方法

1 在ModelContext定义下增加var transaction = ctx.Database.BeginTransaction(); 1.2 在最后一个SaveChanges()后增加transaction.Commit(); 3 在finally的if (sMsgCode != "")分支中增加tra......

_Somuns
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部