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

几点说明

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇