基于c#的xml文件的操作

xml(eXtensible Markup Language),可拓展标志性语言,可用来描述数据,是项目中经常用到也是十分重要的一种文件类型。
下面介绍一些基于c#对xml文档的基本操作。
添加引用。

using System.Xml;           
using System.Xml.Linq; 
using System.Collections.Generic;
首先,创建一个空的xml文档。
    /// <summary>
        /// 创建一个xml文档
        /// </summary>
        /// <param name="FileName">路径文件名带后缀</param>
        /// <param name="root">根节点</param>
        public void CreateXML(string FileName, string root)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XmlDeclaration declaration = XDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            XDoc.AppendChild(declaration);
            XmlElement elem = XDoc.CreateElement(root);
            XDoc.AppendChild(elem);
            XDoc.Save(FileName);
        }
 获取xml文档的根节点
   public string GetXmlRoot(string FileName)
        {
    
    
            XDocument doc = XDocument.Load(FileName);
            XElement root = doc.Root;
            return root.Name.ToString();
        }

向xml文档中写入一级节点

  public void WriteXML_FirstChildNode(string FileName, string FirstChildNode)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            //根节点
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));

            if (elem.SelectSingleNode(FirstChildNode) == null)
            {
    
    
                XmlElement elem1 = XDoc.CreateElement(FirstChildNode);
                elem.AppendChild(elem1);
            }
            XDoc.Save(FileName);
        }

向一级节点下写入二级节点

    public void WriteXML_SecondChildNode(string FileName, string FirstChildNode, string SecondChildNode, string SecondChildNodevalue)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            //根节点
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));
            XmlNode elem2 = elem.SelectSingleNode(FirstChildNode);

            if (elem2.SelectSingleNode(SecondChildNode) == null)
            {
    
    
                XmlElement elem1 = XDoc.CreateElement(SecondChildNode);
                elem2.AppendChild(elem1);
            }
            XmlNode ele3 = elem2.SelectSingleNode(SecondChildNode);
            ele3.InnerText = SecondChildNodevalue;
            XDoc.Save(FileName);
        }

删除某个一级节点

    public void RemoveXml_FirstChildNode(string FileName, string FirstChildNode)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            //根节点
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));
            XmlNode elem1 = elem.SelectSingleNode(FirstChildNode);
            elem.RemoveChild(elem1);
            XDoc.Save(FileName);
        }

删除一级节点下的每个二级节点

    public void RemoveXml_SecondChildNode(string FileName, string FirstChildNode, string SecondChildNode)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));
            XmlNode elem1 = elem.SelectSingleNode(FirstChildNode);
            XmlNode elem2 = elem1.SelectSingleNode(SecondChildNode);
            elem1.RemoveChild(elem2);
            XDoc.Save(FileName);
        }

读取整个xml文档并在listbox中显示

      public void ReadXml_All(string FileName, ListBox listBox)
        {
    
    
            listBox.Items.Clear();
            listBox.Items.Add("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
            XDocument doc = XDocument.Load(FileName);
            XElement root = doc.Root;
            listBox.Items.Add("<" + root.Name + ">");
            IEnumerable<XElement> listnode = root.Elements();

            foreach (XElement item in listnode)
            {
    
    
                listBox.Items.Add("  <" + item.Name + ">");
                var nodes = item.Elements();
                foreach (var noddd in nodes)
                {
    
    
                    listBox.Items.Add("       " + noddd);
                }
                listBox.Items.Add("  </" + item.Name + ">");
            }
            listBox.Items.Add("</" + root.Name + ">");
        }

获取一级节点下某个二级节点的值

     public void ReadOne_SecondChildNodevalue(string FileName, string FirstChildNode, string SecondChildNode, out string SecondChildNodevalue)
        {
    
    
            SecondChildNodevalue = string.Empty;
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            //根节点
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));
            //一级子节点
            XmlNode elem1 = elem.SelectSingleNode(FirstChildNode);
            XmlNode elem2 = elem1.SelectSingleNode(SecondChildNode);
            if (elem2 == null)
            {
    
    
                MessageBox.Show("无此节点", "错误");
            }
            else
            {
    
    
                SecondChildNodevalue = elem2.InnerText.ToString();
            }
        }

修改一级节点下的某个二级节点的值

        public void ReadOne_SecondChildNodeExvalue(string FileName, string FirstChildNode, string SecondChildNode, string SecondChildNodeValue)
        {
    
    
            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(FileName);
            //根节点
            XmlNode elem = XDoc.SelectSingleNode(GetXmlRoot(FileName));
            //一级子节点
            XmlNode elem1 = elem.SelectSingleNode(FirstChildNode);
            XmlNode elem2 = elem1.SelectSingleNode(SecondChildNode);
            elem2.InnerText = SecondChildNodeValue;
            XDoc.Save(FileName);            
        }

猜你喜欢

转载自blog.csdn.net/Iawfy_/article/details/113649693