2)如何创建一个xml文档
由于xml实质也只是一个文本文件,所以最简单你可以直接使用System.IO下的类生成一个文件,并存储成xml文件,当然,你需要手动保证该文件形式良好,比如必须有根元素、必须有关闭标签、必须正确嵌套等等。
如果你懒得自己去想文件的形式,可以使用System.Xml下的类。
XmlDocument xdoc = new XmlDocument();
XmlDeclaration xdcl = xdoc.CreateXmlDeclaration("1.0", "iso-8859-1", "");
xdoc.AppendChild(xdcl);
//XmlNode xnode = xdoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
//xdoc.AppendChild(xnode);
//Of course you can use CreateNode here(with the XmlNodeType.Element),
//so no more questions about 'what difference between this 2 methods?',
XmlElement root = xdoc.CreateElement("music");
xdoc.AppendChild(root);
XmlElement xelm = xdoc.CreateElement("song");
xelm.SetAttribute("title", "Oh,girl");
xelm.InnerText = "Oh,girl,i'd be in trouble if you left me now";
root.AppendChild(xelm);
try
{
xdoc.Save("xmlsample-1.xml");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
结果:
<?xml version="1.0" encoding="iso-8859-1"?>
<music>
<song title="Oh,girl">Oh,girl,i'd be in trouble if you left me now</song>
</music>
由于像XmlDeclaration、XmlElement这些类都继承自XmlNode,故CreateNode()方法是最通用的,可以通过使用XmlNodeType来生成不同类型的节点。
另外,往元素中插入文本,使用的属性是“InnerText”。
方法二:
XmlDocument还有一个LoadXml()方法,实际上跟一行一行写入文本没区别,就是预先写好xml,并把它作为字符串传给LoadXml()方法。
方法三:
如果你手头有一个DataTable,还可以使用DataTable.WriteXml()方法。
DataTable dt = new DataTable("music");
dt.Columns.Add("title", typeof(string));
dt.Columns.Add("artist");
dt.Columns.Add("genre");
dt.Columns.Add("album");
//
dt.Rows.Add("Oh,girl", "The Chi-lites", "Soul", "A lonely man");
dt.Rows.Add("What if", "Babyface", "R&B", "Unknown");
dt.AcceptChanges();
//
dt.WriteXml("xmlsample-2.xml");
结果:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<music>
<title>Oh,girl</title>
<artist>The Chi-lites</artist>
<genre>Soul</genre>
<album>A lonely man</album>
</music>
<music>
<title>What if</title>
<artist>Babyface</artist>
<genre>R&B</genre>
<album>Unknown</album>
</music>
</DocumentElement>