您的位置:首页 > 编程语言 > C#

学习C#之SAX方式操作XML文档

2018-01-21 15:22 435 查看
使用SAX方式操作XML文档的两个练习,

代码如下:

class Program
{
static void Main(string[] args)
{
//文件路径
string filePath = @"C:\Users\Administrator\Desktop\C#\File\SaxFile.xml";
CreateXMLFile(filePath);
ReadXMLFile(filePath);
Console.ReadKey();
}

//解析XML文件
static void ReadXMLFile(string path)
{
//创建读出流
XmlReader reader = XmlReader.Create(path);

//依次获取各个节点
while (reader.Read())
{
//当遇到开始节点student时,获取属性值
if (reader.IsStartElement("Student"))
{
//获取属性值
string idValue = reader.GetAttribute("id");
Console.WriteLine("id" + ":" + idValue);
}

//遇到sex元素,获取间值
if (reader.IsStartElement("sex"))
{
//获取间值
string sexValue = reader.ReadElementContentAsString();
Console.WriteLine("sex : " + sexValue);
}

//如果遇到age元素,获取间值
if (reader.IsStartElement("age"))
{
//获取间值
int ageValue = reader.ReadElementContentAsInt();
Console.WriteLine("age : " + ageValue);
Console.WriteLine();
}

//如果遇到name元素,获取间值
if (reader.IsStartElement("name"))
{
//获取间值
string nameValue = reader.ReadElementContentAsString() ;
Console.WriteLine("name : " + nameValue );
}
}
//操作完成关闭读出流

4000
reader.Close();
}

//创建XML文件
static void CreateXMLFile(string Path)
{
//创建XML文件及写入流
XmlWriter writer = XmlWriter.Create(Path) ;

//按照顺序写入文件
//写入文件声明
writer.WriteStartDocument();
//写入根元素
writer.WriteStartElement("Class");

//第一学生节点
writer.WriteStartElement("Student");
//添加学号属性
writer.WriteAttributeString("id", "001");
//添加name子节点
writer.WriteElementString("name", "Jack");
//添加性别子节点
writer.WriteElementString("sex", "男");
//添加年龄子节点
writer.WriteElementString("age", "18");
//结束第一个学生
writer.WriteEndElement();

//添加第二个学生子节点
writer.WriteStartElement("Student");
//添加学号属性
writer.WriteAttributeString("id", "002");
//添加name子节点
writer.WriteElementString("name", "Cici");
//添加性别子节点
writer.WriteElementString("sex", "女");
//添加年龄子节点
writer.WriteElementString("age", "18");
//结束第二个学生
writer.WriteEndElement();

//操作完成关闭写入流
writer.Close();
}
}


class Program
{
static void Main(string[] args)
{
//文件路径
string filePath = @"C:\Users\Administrator\Desktop\C#\File\TestFile.xml";
CreateXMLFile(filePath);
ReadXMLFile(filePath);
Console.ReadKey();
}

static void CreateXMLFile(string Path)
{
//创建XML文件及写入流
XmlWriter writer = XmlWriter.Create(Path);

//按照顺序写入文件
//写入文件声明
writer.WriteStartDocument();
//写入根元素
writer.WriteStartElement("School");

//第一个班级节点
writer.WriteStartElement("Class");
//添加属性
writer.WriteAttributeString("班级", "六一班");
//添加  班级奖项
writer.WriteElementString("flag", "流动红旗");
//添加  优秀学生
writer.WriteElementString("student", "李阳");
//添加  学生个数
writer.WriteElementString("count", "五十人");
//结束第一个班级节点
writer.WriteEndElement();

//第二个班级节点
writer.WriteStartElement("Class");
//添加属性
writer.WriteAttributeString("班级", "六二班");
//添加  班级奖项
writer.WriteElementString("flag", "优秀班级");
//添加  优秀学生
writer.WriteElementString("student", "黄斌");
//添加  学生个数
writer.WriteElementString("count", "四十八人");
//结束第一个班级节点
writer.WriteEndElement();

//操作完成关闭写入流
writer.Close();
}

static void ReadXMLFile(string Path)
{
//创建读出流
XmlReader reader = XmlReader.Create(Path);

//依次获取各个节点
while (reader.Read())
{
//当遇到开始节点Class时,获取属性值
if (reader.IsStartElement("Class"))
{
//获取属性值
string classValue = reader.GetAttribute("班级");
Console.WriteLine("班级: " + classValue);
}
//如果遇到count 元素,获取间值
else if (reader.IsStartElement("count"))
{
//获取间值
string countValue = reader.ReadElementContentAsString();
Console.WriteLine("count: " + countValue);
Console.WriteLine();//读出一个之后换行
}

//如果遇到student 元素,获取间值
else if (reader.IsStartElement("student"))
{
//获取间值
string studentValue = reader.ReadElementContentAsString();
Console.WriteLine("student: " + studentValue);
}
//如果遇到flag 元素,获取间值
else if (reader.IsStartElement("flag"))
{
//获取间值
string flagValue = reader.ReadElementString();
Console.WriteLine("name: " + flagValue);
}
}

//操作完成关闭读出流
reader.Close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: