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

使用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 );
            }
        }
        //操作完成关闭读出流
        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();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值