`
hzy3774
  • 浏览: 984885 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

C#写入和读取xml文档

 
阅读更多

写入文档:

 static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();//实例化文档对象
            
            if (File.Exists("student.xml"))//如果文件已存在,载入文档
            {
                doc.Load("student.xml");
            }
            else//否则
            {
                XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8","yes");//设置声明
                doc.AppendChild(dec);

                XmlElement root = doc.CreateElement("root");//加入根节点
                doc.AppendChild(root);
            }

            XmlElement student = doc.CreateElement("student");//插入一个student节点
            student.SetAttribute("id", "120");//设置id属性
            student.SetAttribute("age", "22");//设置age属性
            student.InnerText = "张三";//设置中间文本

            doc.DocumentElement.AppendChild(student);//将student节点连接在根节点上

            doc.Save("student.xml");//保存文档
        }

执行3次后产生的xml文档:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
  <student id="120" age="22">张三</student>
  <student id="120" age="22">张三</student>
  <student id="120" age="22">张三</student>
</root>

 

  

 

使用XmlTextReader从头到尾阅读xml文档,比较适合大量数据读取

 

 static void Main(string[] args)
        {
            XmlTextReader reader;

            if (File.Exists("student.xml"))//如果文件已存在,载入文档
            {
                reader = new XmlTextReader("student.xml");
            }
            else//否则
            {
                return;
            }

            int count = 0;
            while (reader.Read())//阅读下一个
            {
                if (reader.Name == "student")
                {
                    //显示读取的属性和中间文本
                    Console.WriteLine(reader.GetAttribute("id") + " " + reader.GetAttribute("age") + " " + reader.ReadString());
                    count++;
                }
            }
            reader.Close();//关闭阅读器
            Console.WriteLine("Count is " + count);
            Console.ReadKey();
        }

 

当然也可以用xmlDocument进行结构化读取,但是读取前系统会把整个文档的结构获取进来

 static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();

            if (File.Exists("student.xml"))//如果文件已存在,载入文档
            {
                doc.Load("student.xml");
            }
            else//否则
            {
                Console.WriteLine("文档不存在!");
                Console.ReadKey();
                return;
            }

            XmlNodeList list = doc.DocumentElement.SelectNodes("student");//读取根节点的所有子节点,放到XmlNodeList中

            foreach (XmlNode node in list)//从list中遍历所有节点
            {
                XmlElement ele = (XmlElement)node;//节点可以有中间文本但是没有属性值,所以要先转成element才能读出属性值
                Console.WriteLine(ele.GetAttribute("id") + " " + ele.GetAttribute("age") + " " + ele.InnerText);//读取数据/显示
            }

            Console.ReadKey();
        }

 

 执行效果完全一样
 

  • 大小: 32.5 KB
  • 大小: 7.8 KB
  • 大小: 9.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics