zoukankan      html  css  js  c++  java
  • <转载>XML操作

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    using System.Web;
    using System.Xml.Linq;
    
    namespace XMLOperation
    {
        class Program
        {
            static void Main(string[] args)
            {
                /*=============Linq 读写XML==================*/
                string wxmlPath = @"F:XmlTest	est.xml";
                XmlWriteReadLinqOperation writeReadLinq = new XmlWriteReadLinqOperation();
                // writeReadLinq.WriteXml(wxmlPath);
                writeReadLinq.CreatXmlTree(wxmlPath);
    
    
    
    
                //string xmlPath = @"F:XML.xml";
                string xmlPath = @"C:Userszery.zhangDesktopProjectDemoXML.xml";
                /*
                 * 1 三者之间的关系用图画出
                 * 2 XMLElement 主要是针对节点的一些属性进行操作
                 * 3 XMLDocument 主要是针对节点的CUID操作
                 * 4 XMLNode 为抽象类,做为以上两类的基类,提供一些操作节点的方法
                 */
    
                //===========C# to Xml==========//
                XmlOperation xmlOperation = new XmlOperation();
                //xmlOperation.Create(xmlPath);
                //xmlOperation.CreateAttribute(xmlPath);
    
                //xmlOperation.Delete(xmlPath);
                //xmlOperation.DeleteAttribute(xmlPath);
    
                //xmlOperation.Modify(xmlPath);
                //xmlOperation.ModifyAttribute(xmlPath);
    
                //xmlOperation.Select(xmlPath);
                //xmlOperation.SelectAttribute(xmlPath);
                /*=============Linq to Xml===========*/
                XmlOperationToLinq xOperation = new XmlOperationToLinq();
                // xOperation.Create(xmlPath);
                /*
                 *1 给指定的XML节点的所有子节点增加一个节点,并增加属性
                 *2 删除指定节点的子节点的指定属性
                 *3
                 */
                string lxmlPath = @"F:XmlTest	est.xml";
                xOperation.Create(lxmlPath);
                xOperation.CreateAttribute(lxmlPath);
                //xperation.Delete(lxmlPath);
                //xOperation.DeleteAttribute(lxmlPath);
               // xOperation.ModifyAttribute(lxmlPath);
    
                /*=============C# 读写XML===============*/
                XmlWriteReadOperation writeRead = new XmlWriteReadOperation();
    
    
                Console.Read();
    
            }
    
        }
    
        class XmlOperation
        {
    
            public void Create(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                var root = xmlDoc.DocumentElement;//取到根结点
    
                XmlNode newNode = xmlDoc.CreateNode("element", "Name", "");
                newNode.InnerText = "Zery";
    
                //添加为根元素的第一层子结点
                root.AppendChild(newNode);
                xmlDoc.Save(xmlPath);
            }
            //属性
            public void CreateAttribute(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                XmlElement node = (XmlElement)xmlDoc.SelectSingleNode("Collection/Book");
                node.SetAttribute("Name", "C#");
                xmlDoc.Save(xmlPath);
            }
    
            public void Delete(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                var root = xmlDoc.DocumentElement;//取到根结点
    
                var element = xmlDoc.SelectSingleNode("Collection/Name");
                root.RemoveChild(element);
                xmlDoc.Save(xmlPath);
            }
    
            public void DeleteAttribute(string xmlPath)
            {
                
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                XmlElement node = (XmlElement)xmlDoc.SelectSingleNode("Collection/Book");
                //移除指定属性
                node.RemoveAttribute("Name");
                //移除当前节点所有属性,不包括默认属性
                node.RemoveAllAttributes();
    
                xmlDoc.Save(xmlPath);
    
            }
    
            public void Modify(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                var root = xmlDoc.DocumentElement;//取到根结点
                XmlNodeList nodeList = xmlDoc.SelectNodes("/Collection/Book");
                //xml不能直接更改结点名称,只能复制然后替换,再删除原来的结点
                foreach (XmlNode node in nodeList)
                {
                    var xmlNode = (XmlElement)node;
                    xmlNode.SetAttribute("ISBN", "Zery");
                }
                xmlDoc.Save(xmlPath);
    
            }
    
            public void ModifyAttribute(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                XmlElement element = (XmlElement)xmlDoc.SelectSingleNode("Collection/Book");
                element.SetAttribute("Name", "Zhang");
                xmlDoc.Save(xmlPath);
    
            }
    
            public void Select(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                //取根结点
                var root = xmlDoc.DocumentElement;//取到根结点
                //取指定的单个结点
                XmlNode singleNode = xmlDoc.SelectSingleNode("Collection/Book");
    
                //取指定的结点的集合
                XmlNodeList nodes = xmlDoc.SelectNodes("Collection/Book");
    
                //取到所有的xml结点
                XmlNodeList nodelist = xmlDoc.GetElementsByTagName("*");
            }
    
            public void SelectAttribute(string xmlPath)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlPath);
                XmlElement element = (XmlElement)xmlDoc.SelectSingleNode("Collection/Book");
                string name = element.GetAttribute("Name");
              
            }
        }
    
        class XmlOperationToLinq
        {
            //其它操作
            public void OtherOperaton()
            {
                //加文件头
            }
    
    
    
            public void Create(string xmlPath)
            {
                XDocument xDoc = XDocument.Load(xmlPath);
                XElement xElement = xDoc.Element("BookStore");
                xElement.Add(new XElement("Test", new XAttribute("Name", "Zery")));
                xDoc.Save(xmlPath);
            }
    
            public void CreateAttribute(string xmlPath)
            {
                XDocument xDoc = XDocument.Load(xmlPath);
                IEnumerable<XElement> xElement = xDoc.Element("BookStore").Elements("Book");
                foreach (var element in xElement)
                {
                    element.SetAttributeValue("Name", "Zery");
                }
                xDoc.Save(xmlPath);
            }
            
            public void Delete(string xmlPath)
            {
                XDocument xDoc = XDocument.Load(xmlPath);
                XElement element = (XElement)xDoc.Element("BookStore").Element("Book");
                element.Remove();
                xDoc.Save(xmlPath);
            }
    
            public void DeleteAttribute(string xmlPath)
            {
                XDocument xDoc = XDocument.Load(xmlPath);
                //不能跨级取节点
                XElement element = xDoc.Element("BookStore").Element("Book").Element("Name");
                element.Attribute("BookName").Remove();
                xDoc.Save(xmlPath);
            }
    
            public void ModifyAttribute(string xmlPath)
            {
                XDocument xDoc = XDocument.Load(xmlPath);
                XElement element = xDoc.Element("BookStore").Element("Book");
                element.SetAttributeValue("BookName","ZeryTest");
                xDoc.Save(xmlPath);
            }
    
    
        }
    
        internal class XmlWriteReadOperation
        {
    
        }
    
    
        class XmlWriteReadLinqOperation
        {
    
    
            public void CreatXmlTree(string xmlPath)
            {
                XElement xElement = new XElement(
                    new XElement("BookStore",
                        new XElement("Book",
                            new XElement("Name", "C#入门", new XAttribute("BookName", "C#")),
                            new XElement("Author", "Martin", new XAttribute("Name", "Martin")),
                            new XElement("Adress", "上海"),
                            new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd"))
                            ),
                        new XElement("Book",
                            new XElement("Name", "WCF入门", new XAttribute("BookName", "WCF")),
                            new XElement("Author", "Mary", new XAttribute("Name", "Mary")),
                            new XElement("Adress", "北京"),
                            new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd"))
                            )
                            )
                    );
    
                //需要指定编码格式,否则在读取时会抛:根级别上的数据无效。 第 1 行 位置 1异常
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Encoding = new UTF8Encoding(false);
                settings.Indent = true;
                XmlWriter xw = XmlWriter.Create(xmlPath,settings);
                xElement.Save(xw);
                //写入文件
                xw.Flush();
                xw.Close();
            }
    
    
    
    
            public void WriteXml(string xmlPath)
            {
                XElement xElement = new XElement(
                    new XElement("Store",
                        new XElement("Book", "技术类",
                            new XElement("Name", "C#入门", new XAttribute("BookName", "C#")),
                            new XElement("Author", "Martin", new XAttribute("Name", "Zery")),
                            new XComment("以下为注释"),//xml注释
                            new XElement("Date", DateTime.Now.ToString(), new XAttribute("PublicDate", DateTime.Now.ToString()))
                            ))
                    );
           
                XmlWriter xw = XmlWriter.Create(xmlPath);
                //保存到XmlWriter
                xElement.Save(xw);
                //写入文件
                xw.Flush();
                xw.Close();
    
            }
    
    
        }
    }
  • 相关阅读:
    计算器第七次作业——总结
    计算器第六次作业——界面
    链表反转
    计算器第五次作业——更新
    求圆的面积
    计算器第四次作业——实现
    计算器第三次作业——完善
    计算器第三次作业——初步
    成长函数
    单个H扩展到多个H时,机器学习的保证
  • 原文地址:https://www.cnblogs.com/ChangTan/p/8305882.html
Copyright © 2011-2022 走看看