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

前端之家收集整理的这篇文章主要介绍了『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); } } } } 

猜你在找的XML相关文章