最近在做一个项目,设计到xml文件的传输,所以就研究了一下。
,.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);
效果如下:
<<ROOT>
<MEMBERLIST>
<MEMBERAGE=">=29"SEX="MALE">
<NAME>张三</NAME>
<NAME>李四</NAME>
</MEMBER>
<MEMBERAGE=">=35"SEX="MALE">
<NAME>王五</NAME>
<NAME>赵六</NAME>
</MEMBER>
<MEMBERAGE="<29" SEX="MALE">
<NAME>六七</NAME>
</MEMBER>
</MEMBERLIST>
< </ROOT>
有几点要记住了,XmlNode包含XmlElement,即XmlNode可以转化为XmlElement而XmlElement不可以转化为XmlNode.
xmDoc.selectSingleNode(“节点名称”).这个节点名称是他的路径。若是根节点当时只写名称就可以了,若是子节点,则需要些明从根节点到它的路径。
再就是遍历xml文件,这个就不记录了,上面这些操作会了,遍历就不是问题了。