您的位置:首页 > 编程语言 > C#

C#中 XML 读写文件的方法(xmlreader,xmlwriter)

2013-03-11 11:44 423 查看
 


C#中xml读写文件的方法(xmlreader,xmlwriter)

 

using System;//写入

using System.Collections.Generic;

using System.Text;

using System.Xml;


namespace xmlwriter

{

    class xmlwriter

    {

        public static void Main(string[] args)

        {

            string path = @"c:\newmail.xml";

//          string path = @"c:\people.xml";

            string oldpath = @"c:\mail.xml";

/*          try//写入元素

               {

                XmlWriterSettings mySettings = new XmlWriterSettings();

                mySettings.Indent = true;//是否进行缩进

                mySettings.IndentChars = ("    ");


                XmlWriter myWriter = XmlWriter.Create(path, mySettings);

                myWriter.WriteStartElement("people");

                myWriter.WriteElementString("name", "zhang");

                myWriter.WriteEndElement();

                myWriter.Flush();//当在派生类中被重写时候将缓冲区的所有内容刷新到基础流

            }*/

/*           try//写入属性

            {

                XmlWriterSettings mySettings = new XmlWriterSettings();

                mySettings.Indent = true;

                mySettings.IndentChars = ("    ");


                XmlWriter myWriter = XmlWriter.Create(path, mySettings);//创建XMLWRITER实例

                //输入XML数据

                myWriter.WriteStartElement("people");

                myWriter.WriteAttributeString("sex", "male");

                myWriter.WriteElementString("name", "zhang");

                myWriter.WriteEndElement();

                myWriter.Flush();

            }*/

/*            try//第二种写入属性的方法

            {

                XmlWriterSettings mySettings = new XmlWriterSettings();

                mySettings.Indent = true;

                mySettings.IndentChars = ("    ");


                XmlWriter myWriter = XmlWriter.Create(path,mySettings);

                myWriter.WriteStartElement("people");

                myWriter.WriteStartAttribute("nation");

                myWriter.WriteValue("chinese");

                myWriter.WriteEndAttribute();

                myWriter.WriteElementString("name", "zhang");

                myWriter.WriteEndElement();

                myWriter.Flush();

            }*/

/*            try//第三种写入XML的方法

            {

                XmlWriterSettings mySettings = new XmlWriterSettings();

                mySettings.Indent = true;

                mySettings.IndentChars = ("    ");


                XmlWriter myWriter = XmlWriter.Create(path,mySettings);

                myWriter.WriteStartElement("people");

                myWriter.WriteElementString("name","zhang");

                myWriter.WriteElementString("nation", "china");

                myWriter.WriteEndElement();

                myWriter.Flush();

            }*/

            try//第三种写入XML的方法

            {

                XmlWriterSettings mySettings = new XmlWriterSettings();

                mySettings.Indent = true;

                mySettings.IndentChars = ("    ");


                XmlReader myReader = XmlReader.Create(oldpath);

                myReader.ReadToNextSibling("mail");


                XmlWriter myWriter = XmlWriter.Create(path);

                myWriter.WriteNode(myReader, true);

                myWriter.Flush();

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

            Console.ReadLine();

        }

    }

}


using System;//读取

using System.Collections.Generic;

using System.Text;

using System.Xml;


namespace xml

{

    class Program

    {

        static void Main(string[] args)

        {

            string path = @"c:\mail.xml";

            string date = string.Empty;

//          XmlReader reader;

/*          try

            {

                XmlReader myReader = XmlReader.Create(path);

                myReader.ReadStartElement("mail");

                myReader.ReadStartElement("date");


                myReader.ReadStartElement("month");

                Console.WriteLine("month 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadStartElement("day");

                Console.WriteLine("day 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadStartElement("year");

                Console.WriteLine("year 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadEndElement();

                myReader.ReadStartElement("to");

                Console.WriteLine("to 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadStartElement("from");

                Console.WriteLine("from 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadStartElement("title");

                Console.WriteLine("title 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadStartElement("body");

                Console.WriteLine("body 中包含的节点内容是: ");

                Console.WriteLine(myReader.ReadString());

                myReader.ReadEndElement();


                myReader.ReadEndElement();

//              while (myReader.Read());

            }*/

/*          try 

            {

                XmlReader myReader = XmlReader.Create(path);

                while (myReader.Read())

                {

                    if (myReader.IsStartElement())

                    {

                        if(myReader.IsEmptyElement)

                            Console.WriteLine("<{0}/>",myReader.Name);

                        else

                        {

                            Console.Write("<{0}>",myReader.Name);

                            myReader.Read();

                            if(myReader.IsEmptyElement)

                                Console.WriteLine("\r\n<{0}>", myReader.Name);

                            Console.Write(myReader.ReadString());

                            Console.WriteLine("</{0}>",myReader.Name);

                        }

                    }

                }

                Console.WriteLine("</mail>");

            }*/

            try//读取制定的属性

            {

                XmlReader myReader = XmlReader.Create(path);

//              myReader.ReadToNextSibling("mail");

                myReader.ReadToDescendant("mail");

                date = myReader.GetAttribute("date");

                Console.WriteLine("信件的日期为: ");

                Console.WriteLine(date);

            }

/*          try 

            {

                XmlReader myReader = XmlReader.Create(path);

                while(myReader.Read())

                {

                    if(myReader.HasAttributes)

                    {

                        Console.WriteLine("<" + myReader.Name +">的属性: ");

                        while (myReader.HasAttributes)

                        {

                            Console.WriteLine("{0}={1}", myReader.Name, myReader.Value);

                        }

                        myReader.Read();//

                    }

                }

            }*/

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

            Console.ReadLine();

        }

    }

}


class Test

    {

        public static void Main(string[] args)

        {

            string path = "d:\\books.xml";

            

            XmlReader reader = null;

            try

            {

                // 创建XmlReaderSettings对象

                XmlReaderSettings settings = new XmlReaderSettings();

                // 设置XmlReaderSettings对象的属性

                settings.ProhibitDtd = false;

                // 使用XmlReaderSettings对象来创建XmlReader对象

                reader = XmlReader.Create(path, settings);

                ReadXml(reader);

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            finally

            {

                if (reader != null)

                    reader.Close();

            }

        }

        private static void ReadXml(XmlReader reader)

        {

            try

            {

                // 解析文件,并显示每一个节点

                while (reader.Read())

                {

                    switch (reader.NodeType)

                    {

                        case XmlNodeType.Element:

                            if (reader.IsEmptyElement) // 空元素?

                            {

                                Console.WriteLine("<{0}/>", reader.Name);

                            }

                            else

                            {

                                Console.Write("<{0}", reader.Name);

                                if (reader.HasAttributes)   // 属性?

                                {

                                    while (reader.MoveToNextAttribute())

                                    {

                                        Console.Write(" {0}=\"{1}\"", reader.Name, reader.Value);

                                    }

                                }

                                Console.WriteLine(">", reader.Name);

                            }

                            break;

                        case XmlNodeType.Text:

                            Console.WriteLine(reader.Value);

                            break;

                        case XmlNodeType.CDATA:

                            Console.WriteLine("<![CDATA[{0}]]>", reader.Value);

                            break;

                        case XmlNodeType.ProcessingInstruction:

                            Console.WriteLine("<?{0} {1}?>", reader.Name, reader.Value);

                            break;

                        case XmlNodeType.Comment:

                            Console.WriteLine("<!--{0}-->", reader.Value);

                            break;

                        case XmlNodeType.XmlDeclaration:

                            Console.WriteLine("<?xml version='1.0'?>");

                            break;

                        case XmlNodeType.Document:

                            break;

                        case XmlNodeType.DocumentType:

                            Console.WriteLine("<!DOCTYPE {0} [{1}]>", reader.Name, reader.Value);

                            break;

                        case XmlNodeType.EntityReference:

                            Console.WriteLine(reader.Name);

                            break;

                        case XmlNodeType.EndElement:

                            Console.WriteLine("</{0}>", reader.Name);

                            break;

                    }

                }

            }

            catch (XmlException ex)

            {

                Console.WriteLine(ex.Message);

            }

        }

    }


 
#.net 开发
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net 开发