C# Xml檔案操作,解釋見注釋

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   color   ar   os   for   

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace XmlTest{    class Program    {        //第一種方案 xml資料流        static void ReadOrder()        {            XmlReaderSettings settings = new XmlReaderSettings();          // 控制解析和驗證過程            settings.IgnoreWhitespace = true;                              // 忽略空白地區            settings.IgnoreComments   = true;                              // 忽略注釋            settings.ConformanceLevel = ConformanceLevel.Document;         // 是否只具有一個根節點            using (XmlReader reader = XmlReader.Create("Sample.xml", settings))   //開啟檔案            {                while (reader.Read())                                             //xml流單位為XMNL節點並且是單向的,每次調用read()都會使節點指向下一個位置,如果為false表示檔案結束                {                    Console.WriteLine(new string(‘ ‘, reader.Depth * 2));         //深度                    Console.WriteLine(reader.NodeType);                           //節點類型,參考XmlNodeType結構,                    switch (reader.NodeType)                    {                        case XmlNodeType.Element:                                //元素(例如,<item>)。                        case XmlNodeType.EndElement:                             //末尾元素標記(例如,</item>)。                            Console.WriteLine(reader.Name);                            break;                        case XmlNodeType.Text:                                   //節點的常值內容。                        case XmlNodeType.Comment:                                //注釋(例如,<!-- my comment -->)。                        case XmlNodeType.Attribute:                              //屬性                            Console.WriteLine(reader.Value);                             break;                    }                    Console.WriteLine("================================");                }            }        }        static void readtest()        {            XmlReaderSettings settings = new XmlReaderSettings();            settings.IgnoreWhitespace = true;            using (XmlReader reader = XmlReader.Create("Sample.xml", settings))            {                string str = "";                //檢查當前節點是否是內容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)節點,如果此節點不是內容節點,則讀取器向前跳至下一個內容節點或檔案結尾。 它跳過以下類型的節點:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace。                reader.MoveToContent();                                        //檢查當前內容節點是否為具有給定 System.Xml.XmlReader.Name 的元素並將讀取器推進到下一個節點。                reader.ReadStartElement("OpenNI");                Console.WriteLine(reader["id"]);                //當在衍生類別中被重寫時,移動到具有指定 System.Xml.XmlReader.Name 的屬性。                reader.MoveToAttribute("name");                //將當前位置的常值內容作為 System.String 對象讀取。                Console.WriteLine(reader.ReadContentAsString());                reader.MoveToAttribute("id");                Console.WriteLine(reader.ReadContentAsString());                //讀取屬性後,節點位於Attribute,通過查看NoteType可以進行如下方式進行處理:                //第一種方式:                //reader.ReadStartElement();                //str = reader.ReadElementContentAsString("price", "");                //Console.WriteLine(str);                //reader.ReadEndElement();                           //第二種方式:                //當在衍生類別中被重寫時,移動到包含當前屬性節點的元素。                reader.MoveToElement();                str = reader.ReadElementContentAsString("title", "");                Console.WriteLine(str);                reader.ReadStartElement("Licenses");                //檢查指定的本地名稱和命名空間 URI 與當前元素的本地名稱和命名空間 URI 是否匹配,然後讀取當前元素,並將內容作為 System.String                str = reader.ReadElementContentAsString("price", "");                Console.WriteLine(str);                reader.ReadEndElement();                reader.ReadEndElement();            }        }        static void writetest(string filename)        {            XmlWriterSettings settings = new XmlWriterSettings();            settings.Indent = true;            settings.OmitXmlDeclaration = false;            using (XmlWriter writer = XmlWriter.Create(filename, settings))            {                //起始元素                writer.WriteStartElement("book");                //寫屬性                writer.WriteAttributeString("name","the art of code");                writer.WriteAttributeString("time", DateTime.Now.ToString());                //節點1                writer.WriteElementString("name","the art of code");                //節點2                writer.WriteStartElement("time");                writer.WriteValue(DateTime.Now);                writer.WriteEndElement();                //結束“book”節點                writer.WriteEndElement();            }        }        //==========================================================第二種方案        static void WriteXmlDoc(String filename)        {            XmlDocument xml = new XmlDocument();            //添加聲明            XmlDeclaration xmldecl = xml.CreateXmlDeclaration("1.0", "gb2312", null);            xml.AppendChild(xmldecl);            //建立根節點            XmlElement root =  xml.CreateElement("root");            xml.AppendChild(root);            //建立屬性            XmlAttribute id = xml.CreateAttribute("id");            id.Value = "1234";            //建立時間屬性            XmlAttribute time = xml.CreateAttribute("time");            time.Value = DateTime.Now.ToString();            //建立元素            XmlElement name = xml.CreateElement("name");            name.AppendChild(xml.CreateTextNode("the art of code"));            XmlElement author = xml.CreateElement("author");            author.AppendChild(xml.CreateTextNode("s.b"));            XmlElement book = xml.CreateElement("book");            book.AppendChild(name);            book.AppendChild(author);            //根節點添加屬性            root.Attributes.Append(id);            root.Attributes.Append(time);            //設定屬性            root.SetAttribute("num", "10000");            //跟節點添加子節點            root.AppendChild(book);            xml.Save(filename);        }        static void ReadXmlDoc(string filename)         {            XmlDocument xml = new XmlDocument();            xml.Load(filename);            //獲得屬性            Console.WriteLine(xml.DocumentElement.Attributes["time"].Value);            //遍曆子節點            if (xml.DocumentElement.HasChildNodes)            {                XmlNodeList list = xml.DocumentElement.ChildNodes;                foreach (XmlNode it in list)                {                    Console.WriteLine(it.InnerXml);                }            }        }        static void Main(string[] args)        {            //ReadOrder();          //  readtest();//            writetest("test.xml");            WriteXmlDoc("doc.xml");            ReadXmlDoc("doc.xml");            Console.Read();        }    }}
細雨標記: 細雨淅淅

C# Xml檔案操作,解釋見注釋

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.