by 好大一小白
2010.5.2 12:39
希望将数据置为一种更结构化的形式,如置于一个XML文档中。
这里介绍.NET中常用的两种生成XML的方法:(用string拼XML的方法就不介绍了)
例如有数据:
| 名字 |
电话 |
| Tim |
999-888-0000 |
| Newman |
666-666-6666 |
| Harold |
777-555-3333 |
使用XmlWriter为这个表创建XML:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
writer.WriteStartElement("AddressBook");
writer.WriteStartElement("Contact");
writer.WriteAttributeString("name", "Time");
writer.WriteAttributeString("phone", "999-888-0000");
writer.WriteEndElement();
writer.WriteStartElement("Contact");
writer.WriteAttributeString("name", "Newman");
writer.WriteAttributeString("phone", "666-666-6666");
writer.WriteEndElement();
writer.WriteStartElement("Contact");
writer.WriteAttributeString("name", "Harold");
writer.WriteAttributeString("phone", "777-555-3333");
writer.WriteEndElement();
writer.WriteEndElement();
}
输出结果:
<?xml version="1.0" encoding="gb2312"?>
<AddressBook>
<Contact name="Time" phone="999-888-0000" />
<Contact name="Newman" phone="666-666-6666" />
<Contact name="Harold" phone="777-555-3333" />
</AddressBook>
或者,也可以通过XmlDocument类通过编程来构造XML:
XmlDocument xmlDoc = new XmlDocument();
XmlElement addrBook = xmlDoc.CreateElement("AddressBook");
xmlDoc.AppendChild(addrBook);
XmlElement contact = xmlDoc.CreateElement("Contact");
contact.SetAttribute("name", "Time");
contact.SetAttribute("phone", "999-888-0000");
addrBook.AppendChild(contact);
contact = xmlDoc.CreateElement("Contact");
contact.SetAttribute("name", "Newman");
contact.SetAttribute("phone", "666-666-6666");
addrBook.AppendChild(contact);
contact = xmlDoc.CreateElement("Contact");
contact.SetAttribute("name", "Harold");
contact.SetAttribute("phone", "777-555-3333");
addrBook.AppendChild(contact);
Console.WriteLine(addrBook.OuterXml);
Console.ReadLine();
输出结果:
<AddressBook><Contact name="Time" phone="999-888-0000" /><Contact name="Newman" phone="666-666-6666" /><Contact name="Harold" phone="777-555-3333" /></AddressBook>
具体该使用那种方法呢?
XmlDocument使用传统的DOM方法与XML交互,而XmlReader/XmlWriter组合则通过流处理XML。如果处理比较大的文档,可能最好使用XmlReader/XmlWriter组合,这要优于XmlDocument。如果不需要把整个文档都放入内存,则这两种方法中XmlReader/XmlWriter组合的表现会更好。如果需要取回所写的内容,或者不按顺序写数据项,就要使用XmlDocument。