Xml是扩展标记语言的简写,是一种开发的文本格式。关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210。如果你不知道它,那你就out太多了。
.Net是如何处理Xml的?
1.通过XmlDocument读写Xml文档
2.通过XmlWriter和XmlReader读写Xml文档
3.使用Linq to xml存取XML
4.通过XmlScheme定义固定格式xml文档
5.Xml序列化或者反序列化类
6.通过XPath查找Xml节点
7.通过Xslt转化Xml格式
通过XmlDocument读写Xml文档
有如下一段Xml:
xml version = "1.0" encoding = "utf-8" ?> |
1.如何使用XmlDocument读取Xml
我要用一段代码遍历所有Student,并打印Student的所有属性和子节点的值
using System.Collections.Generic; |
static void Main( string [] args) |
string xmlFilePath = @"X:\about.net\example\XmlExample\1.xml" ; |
XmlDocument doc = new XmlDocument(); |
XmlNodeList studentNodeList = doc.SelectNodes( "/students/student" ); |
if (studentNodeList != null ) |
foreach (XmlNode studentNode in studentNodeList) |
string name = studentNode.Attributes[ "name" ].Value; |
Console.WriteLine( "Student:" + name); |
XmlNode coursesNode = studentNode.SelectSingleNode( "courses" ); |
XmlNodeList courseNodeList = coursesNode.ChildNodes; |
if (courseNodeList != null ) |
foreach (XmlNode courseNode in courseNodeList) |
Console.Write(courseNode.Attributes[ "name" ].Value); |
XmlNode teacherCommentNode = courseNode.FirstChild; |
XmlCDataSection cdata = (XmlCDataSection)teacherCommentNode.FirstChild; |
Console.WriteLine(cdata.InnerText.Trim()); |
Console.Write( "\r\nPress any key to continue...." ); |
XmlDocument本身是从XmlNode继承的,读Xml节点可以通过FirstChild,LastChild,或者NextSibling,PreviousSibling读取单个节点,或者通过ChildNodes读取所有子节点。还可以使用XPath表达式使用SelectNodes(string xpath)或者SelectSingleNode(string xpath)读取单个或者多个符合条件的节点。
2.如何通过XmlDocument编辑Xml
同样是读取Xml中的xml例子,我们这次要用csharp代码生成xml,如下代码:
using System.Collections.Generic; |
static void Main( string [] args) |
XmlDocument xmlDoc = new XmlDocument(); |
xmlDoc.CreateXmlDeclaration( "1.0" , "utf-8" , "yes" ); |
XmlNode rootNode = xmlDoc.CreateElement( "students" ); |
XmlNode studentNode = xmlDoc.CreateElement( "student" ); |
XmlAttribute nameAttribute = xmlDoc.CreateAttribute( "name" ); |
nameAttribute .Value = "张同学" ; |
studentNode.Attributes.Append(nameAttribute); |
XmlNode coursesNode = xmlDoc.CreateElement( "courses" ); |
XmlNode courseNode1 = xmlDoc.CreateElement( "course" ); |
XmlAttribute courseNameAttr = xmlDoc.CreateAttribute( "name" ); |
courseNameAttr.Value = "语文" ; |
courseNode1.Attributes.Append(courseNameAttr); |
XmlNode teacherCommentNode = xmlDoc.CreateElement( "teacherComment" ); |
XmlCDataSection cdata = xmlDoc.CreateCDataSection( "这是语文老师的批注" ); |
teacherCommentNode.AppendChild(cdata); |
courseNode1.AppendChild(teacherCommentNode); |
coursesNode.AppendChild(courseNode1); |
studentNode.AppendChild(coursesNode); |
rootNode.AppendChild(studentNode); |
xmlDoc.AppendChild(rootNode); |
xmlDoc.Save( @"d:\test.xml" ); |
Console.WriteLine( "已保存Xml文档" ); |
使用XmlDocument生成xml的要点在于使用xmlDocument的实例的CreateElement创建XmlNode或者通过CreateAttribute方法创建属性,并通过AppendChild方法附加xml节点,通过AppendAttribute附加Attribute到节点的属性集合。