为什么80%的码农都做不了架构师?>>>   

几点说明

  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保存

样例界面

参考代码

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的第一级子节点,也就是innerNodeif (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);}}}
}

转载于:https://my.oschina.net/skyler/blog/706076

『C#基础』XML文件的读与写相关推荐

  1. 02_Android写xml文件和读xml文件

     新建Android项目 编写AndroidManifest.xml,使本Android项目具有单元测试功能和写外设的权限. <?xml version="1.0" en ...

  2. Python 学习笔记(3)对txt文件的读与写操作(下)

    上一章节我们讨论了如何对txt文本文件进行读写操作,这一张将讨论如何进行二进制文件的写与读.<Python 学习笔记(3)对txt文件的读与写操作(上)>的链接如下https://blog ...

  3. Python 学习笔记(3)对txt文件的读与写操作(上)

    目录 1.file 对象 2.open() 方法 3.txt文件的读与写 3.1.写txt文件 3.2.读txt文件 3.2.在文件末尾续写文件 4.写在最后 1.file 对象 file 对象使用 ...

  4. Python3之文件的读、写、修改操作

    文件yesterday Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭 ...

  5. json文件的读与写

    本地JSON文件 的读与写 最近老师给我们一个日历让我们给日历添加记事本功能,推荐我们使用JSON文件,我之前从来没接触过JSON,在经过一系列摸爬滚打之后总算是取得了一些进展. 大致实现了 1.创建 ...

  6. Linux小实验11|添加组group,添加用户aa、bb并加入group组 (2)新建文件/abc.txt (3)设置用户aa对文件拥有读、写和执行权限

    12.根据以下要求完成对文件/目录权限的设置 (1)添加组group,添加用户aa.bb并加入group组 (2)新建文件/abc.txt (3)设置用户aa对文件拥有读.写和执行权限 (4)设置组g ...

  7. 文件的读和写(Python)

    文件的读和写(Python) 读文件 循环读取文件内容 写文件 序列化 反序列化 实例 读取图片 注意:文件夹和文件名是n,x,t,r,v,b等开头,会被转义的.但是大写可以,具体有哪些可以查查Pyt ...

  8. php打开文件读和写,PHP实现文件的读和写功能

    PHP实现文件的读和写功能 进行文件的读和写,先打开一个文件,然后开始读或者写文件,最后再关系这个文件资源. 如,文件的读操作: $file = fopen('your file path','r') ...

  9. Java框架开发基础-解析XML文件

    认识XML |----XML编写要求: XML声明: 1.XML声明用于指明当前文件为XML文件,文件采用的XML版本和编码. 2.<?xml version="1.0" e ...

最新文章

  1. BAT面试题9:谈谈判别式模型和生成式模型?
  2. $sanitize和$sce服务的使用方法
  3. oracle 10g rac 修改sga_target不生效,Oracle Rac 修改SGA_TARGET值无变化
  4. CString,int,string,char*之间的转换(转)
  5. POJ-2456.Aggressivecows.(二分求解最大化最小值)
  6. java中如何直接导入println()
  7. PHP中的错误处理set_error_handler()与trigger_error()的问题
  8. NodeJS--NVM出现exit status 1解决方法
  9. 2022年Android官方模拟器安装Xposed教程+测试工具PatDroid安装教程
  10. 解决CTeX工具包中MikTeX编译TeX文件报错问题
  11. postgres 通过zhparser实现全文搜索功能
  12. TeamCity持续集成和持续交付Docker
  13. 人工智能之自动驾驶系列(一):概要
  14. 北大计算机所孙俊教授,教育部人工智能咨询专家孙俊:科技怎样赋能智慧教育?...
  15. Android——AndroidStudio主题样式、字体设置
  16. Nepxion Discovery【探索】微服务企业级解决方案
  17. 纯原生JS的瀑布流插件Macy.js
  18. python爬取虾米音乐_Python 爬取 620 首虾米歌曲,揭秘五月天为什么狂吸粉?!
  19. 教主黄仁勋亮相GTC China:英伟达已售出15亿块GPU!重磅发布TensorRT 7
  20. 【阅读】Distributed Graph Neural Network Training: A Survey——翻译

热门文章

  1. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  2. deebot扫地机器人响四声_中国智能扫地机器人重点制造基地企业名录(2020年版)...
  3. 计算机系统的输入与输出接口是,计算机输入输出系统与接口技术
  4. 超级警探大战悍匪2java_JavaWeb之会话技术
  5. 四种依恋类型_【工具】成人依恋量类型介绍
  6. 后副车架焊接机器人_焊接机器人的工装设计和工装的使用方法
  7. mysql报表慢_mysql慢查询日志报表工具mysqlsla
  8. oracle物理索引结构,oracle学习笔记(6)oracle物理结构--索引
  9. 蚂蚁爬绳问题 java_趣味数学网
  10. 如何将图片一键重命名按顺序_如何“智慧”地管理文件?(一次付出,终身受益)...