C#操作XMl文件(2):使用XmlReader和XmlWriter实现读取和写入

时间:2022-11-02 11:53:38

这次使用操作Xml较为常用的方法:使用XMlreader和Xmlwriter

1:读取xml文件的数学和元素

XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true;
            settings.IgnoreWhitespace = true;

XmlReader reader = XmlReader.Create("Customer2.xml", settings);
            List<CustomerInfo> lists = new List<CustomerInfo>();

CustomerInfo cust = null;

while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                        case "row":
                            cust = new CustomerInfo();
                            if (reader.HasAttributes)
                            {
                                cust.AppId = reader.GetAttribute("AppID");
                                cust.Version = reader.GetAttribute("Version");
                            }
                            break;

case "CustomerID":
                            cust.CustomerID = reader.ReadString();
                            break;

case "CompanyName":
                            cust.CompanyName = reader.ReadString();
                            break;
                        case "ContactName":
            
                            cust.ContactName = reader.ReadString();
                            break;
                        case "ContactTitle":
   
                            cust.ContactTitle = reader.ReadString();
                            break;

case "Address":
                         
                            cust.Address = reader.ReadString();
                            break;

case "City":
                            cust.City = reader.ReadString();
                            break;

case "PostalCode":
                            cust.PostalCode = reader.ReadString();
                            break;
                        case "Country":
                            cust.Country = reader.ReadString();
                            break;
                        case "Phone":
                            cust.Phone = reader.ReadString();
                            break;
                        case "Fax":
                            cust.Fax = reader.ReadString();
                            lists.Add(cust);
                            break;
                        default:
                            break;

}
                }

}

2.创建文档-属性和元素

XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineOnAttributes = false;
            XmlWriter writer = XmlWriter.Create("CustomerNewElementArribute.xml", settings);
            writer.WriteStartDocument();
            writer.WriteStartElement("Table");

for (int i = 1; i < 10; i++)
            {
                writer.WriteStartElement("row");
                writer.WriteAttributeString("Version", "2.0");
                writer.WriteAttributeString("AppID", "111");
                writer.WriteElementString("CustomerID", "cmz" + i.ToString());
                writer.WriteElementString("CompanyName", "程沐喆" + i.ToString());
                writer.WriteElementString("ContactName", "Maria Anders" + i.ToString());
                writer.WriteElementString("ContactTitle", "Sales Representative" + i.ToString());
                writer.WriteElementString("Address", "Obere Str. 57" + i.ToString());
                writer.WriteElementString("City", "Berlin");
                writer.WriteElementString("PostalCode", "12209");
                writer.WriteElementString("Country", "Germany");
                writer.WriteElementString("Phone", "030-0074321");
                writer.WriteElementString("Fax", "030-0076545");
                writer.WriteEndElement();
            }

writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();
                
        }

private void button7_Click(object sender, EventArgs e)
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineOnAttributes = false;
            settings.Encoding = Encoding.UTF8;
            StringBuilder builder = new StringBuilder();
            XmlWriter writer = XmlWriter.Create(builder, settings);
            writer.WriteStartDocument();
            writer.WriteStartElement("Table");

for (int i = 1; i < 5; i++)
            {
                writer.WriteStartElement("row");
                writer.WriteAttributeString("Version", "2.0");
                writer.WriteAttributeString("AppID", "111");
                writer.WriteElementString("CustomerID", "cmz" + i.ToString());
                writer.WriteElementString("CompanyName", "程沐喆" + i.ToString());
                writer.WriteElementString("ContactName", "Maria Anders" + i.ToString());
                writer.WriteElementString("ContactTitle", "Sales Representative" + i.ToString());
                writer.WriteElementString("Address", "Obere Str. 57" + i.ToString());
                writer.WriteElementString("City", "Berlin");
                writer.WriteElementString("PostalCode", "12209");
                writer.WriteElementString("Country", "Germany");
                writer.WriteElementString("Phone", "030-0074321");
                writer.WriteElementString("Fax", "030-0076545");
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();

writer.Close();

另外在介绍自己学习的使用xmlwriter写入StringBuiler和Stream

创建xml写入StringBuiler:

XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineOnAttributes = false;
            settings.Encoding = Encoding.UTF8;
            StringBuilder builder = new StringBuilder();
            XmlWriter writer = XmlWriter.Create(builder, settings);
            writer.WriteStartDocument();

writer.WriteStartElement("Table");

for (int i = 1; i < 5; i++)
            {
                writer.WriteStartElement("row");
                writer.WriteAttributeString("Version", "2.0");
                writer.WriteAttributeString("AppID", "111");
                writer.WriteElementString("CustomerID", "ALFKI" + i.ToString());
                writer.WriteElementString("CompanyName", "Alfreds Futterkiste" + i.ToString());
                writer.WriteElementString("ContactName", "Maria Anders" + i.ToString());
                writer.WriteElementString("ContactTitle", "Sales Representative" + i.ToString());
                writer.WriteElementString("Address", "Obere Str. 57" + i.ToString());
                writer.WriteElementString("City", "Berlin");
                writer.WriteElementString("PostalCode", "12209");
                writer.WriteElementString("Country", "Germany");
                writer.WriteElementString("Phone", "030-0074321");
                writer.WriteElementString("Fax", "030-0076545");
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();

创建xml写入stream:

XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineOnAttributes = false;
            settings.Encoding = new UTF8Encoding(false);
            MemoryStream stream = new MemoryStream();
            XmlWriter writer = XmlWriter.Create(stream, settings);
            writer.WriteStartDocument();
            writer.WriteStartElement("Table");

for (int i = 1; i < 5; i++)
            {
                writer.WriteStartElement("row");
                writer.WriteAttributeString("Version", "2.0");
                writer.WriteAttributeString("AppID", "111");
                writer.WriteElementString("CustomerID", "ALFKI" + i.ToString());
                writer.WriteElementString("CompanyName", "Alfreds Futterkiste" + i.ToString());
                writer.WriteElementString("ContactName", "Maria Anders" + i.ToString());
                writer.WriteElementString("ContactTitle", "Sales Representative" + i.ToString());
                writer.WriteElementString("Address", "Obere Str. 57" + i.ToString());
                writer.WriteElementString("City", "Berlin");
                writer.WriteElementString("PostalCode", "12209");
                writer.WriteElementString("Country", "Germany");
                writer.WriteElementString("Phone", "030-0074321");
                writer.WriteElementString("Fax", "030-0076545");
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();