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

这次使用操作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();