在c#中XML文件的读写,我个人认为有以下几种:
一:读取数据
1.用XmlDocument 类
XmlDocument xml = new XmlDocument();
xml.Load("mycon.xml");
XmlNode xn = xml.DocumentElement;
foreach (XmlNode x in xn.ChildNodes)
{
switch (x.Name)
{
case "names":
string name = x.InnerText;
break;
case "age":
string age = x.InnerText;
break;
case "address":
string add = x.InnerText;
break;
default:
break;
}
}
2.用DataSet数据集读取或者DataTable也行
DataSet ds = new DataSet();
ds.ReadXml(Path);
或
DataTable dt = new DataTable();
dt.ReadXml(path);
很明显这种读写是很方便,也很强大。
3.用XmlDocument类
XmlDocument doc = new XmlDocument ( ) ;
try
{
// 把merchandise.xml配置文件读入内存
doc.Load("merchandise.xml");
}
catch
{
MessageBox.Show("XML文档读取错误!");
}
//设置读取XML文件的起点,如果不设置的话则默认从根节点开始访问
XmlNode merchandiseNode = doc.SelectSingleNode("/merchandise");
//判断开始节点是否存在
if (merchandiseNode != null)
{
// 设定XmlNodeReader对象来打开XML文件
XmlNodeReader nodereader = new XmlNodeReader( merchandiseNode );
//从开始节点读取XML文件中的节点
while (nodereader.Read())
{
//测试当前内容节点是否是开始标记,只对开始标记进行处理
if (nodereader.IsStartElement())
{
//如果读取得节点为Begin,则读取它的内容作为字符串返回
if (nodereader.Name == "name")
{
nametextBox.Text = nodereader.ReadString();
}
//如果读取得节点为End,则读取它的内容作为字符串返回
if (nodereader.Name == "price")
{
//显示为选课的结束时间
pricetextBox.Text = nodereader.ReadString();
}
}
}
}
二:写入数据
1.XmlWriter类
XmlWriterSettings xws = new XmlWriterSettings();
xws.Indent = true;//设置数据的缩进对齐
XmlWriter writer = XmlWriter.Create("txt.xml", xws);
writer.WriteStartElement("Stock");
writer.WriteAttributeString("Symbol", "bbs");
writer.WriteElementString("Price", "12", "2222");
writer.WriteElementString("Change", XmlConvert.ToString(33));
writer.WriteElementString("Volume", "bbb");
writer.WriteEndElement();
writer.Close();
2.XmlTextWriter类
XmlTextWriter TWrite = new XmlTextWriter(“dt.xml, Encoding.GetEncoding("gb2312"));
TWrite.Formatting = Formatting.Indented;
TWrite.WriteStartElement("Student");
TWrite.WriteAttributeString("Sock", "New");
TWrite.WriteElementString("Name", "AAA");
TWrite.WriteElementString("Sex", "男");
TWrite.WriteElementString("Age", "20");
TWrite.WriteEndElement();
TWrite.Close();
3.DataSet的写入或DataTable写入
DataSet ds = new DataSet();
ds.Tables[0].WriteXml(path);
或
DataTable dt = new DataTable();
dt.WriteXml(path);
其实这两种方法就是一个样的,都会自动生成xml结构。