.NET Framework完全支持XML DOM模式,但它不支持SAX模式。.NET Framework支持两种不同的分析模式:XML DOM分析器(XMLDocument类)和XML阅读器(XMLTextReader类),不支持SAX分析器, 但这并不意味着它没有提供类似SAX分析器的功能。通过XML阅读器可以将SAX的所有的功能很容易的实现及更有效的运用。
但是我们一般运用最多的是DOM。
一、创建xml文件
using System.Xml;
using System.IO;//这个一定要写
XmlDocument xmlDoc = new XmlDocument();
//加入XML的声明段落,Save方法不再xml上写出独立属性
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
//加入根元素
XmlElement root = xmlDoc.CreateElement("ROOT");
xmlDoc.AppendChild(root);
XmlElement memberlist = xmlDoc.CreateElement("MEMBERLIST");
XmlElement memberA = xmlDoc.CreateElement("MEMBER");
memberA.SetAttribute("AGE", ">=29");
memberA.SetAttribute("SEX", "MALE");
XmlElement zs = xmlDoc.CreateElement("NAME");
zs.InnerText = "张三";
XmlElement ls = xmlDoc.CreateElement("NAME");
ls.InnerText = "李四";
memberA.AppendChild(zs);
memberA.AppendChild(ls);
XmlElement memberB = xmlDoc.CreateElement("MEMBER");
memberB.SetAttribute("AGE", ">=35");
memberB.SetAttribute("SEX", "MALE");
XmlElement ww = xmlDoc.CreateElement("NAME");
ww.InnerText = "王五";
XmlElement zl = xmlDoc.CreateElement("NAME");
zl.InnerText = "赵六";
memberB.AppendChild(ww);
memberB.AppendChild(zl);
memberlist.AppendChild(memberA);
memberlist.AppendChild(memberB);
root.AppendChild(memberlist);
xmlDoc.Save(xmlpath);
效果如下:
<?xml version="1.0" encoding="UTF-8"?>
c#代码如下:
xmlDoc.Load(xmlpath);
XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
XmlNodeList nodelist=memberlist.ChildNodes;
// XmlNodeList nodelist=xmlDoc.GetElementsByTagName("MEMBER");
foreach (XmlNode node in nodelist)
{
if (node.Attributes["AGE"].InnerText.ToString().Equals(">=29"))
{
node.ChildNodes[0].InnerText = "张三";
node.ChildNodes[1].InnerText = "李四";
break;
}
}
xmlDoc.Save(xmlpath);
MessageBox.Show("保存成功");
if (File.Exists(xmlpath))
{
xmlDoc.Load(xmlpath);
XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
XmlElement member = xmlDoc.CreateElement("MEMBER");
member.SetAttribute("AGE", "<29");
member.SetAttribute("SEX", "MAIL");
XmlElement lq = xmlDoc.CreateElement("NAME");
lq.InnerText = "六七";
member.AppendChild(lq);
memberlist.AppendChild(member);
xmlDoc.Save(xmlpath);
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("文件不存在");
}