denise28

做不成学术帝,就一辈子做吃货~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

简单的C# 读取XML文档【Note】

Posted on 2010-07-16 14:10  denise28  阅读(526)  评论(1)    收藏  举报

调用java,得到的数据保存在xml文档中

xml 只做个大致的了解,是一种比较常用的导入导出的文件格式,看上去感觉上跟html之类的标记语言差不多,不过还是有很大的区别的。

xml特点在于,它的数据保存是有一个树状结构的,然后很容易就联想到数据结构里的,树形的遍历....

参考XML tutorial:

http://www.w3schools.com/xml/default.asp

程序是用C#写的,根据程序的结果大致判断出,读取node的顺序是,xml文件从开头到结尾一个一个node的读取

参考了网上的examples,它用了几种方法:

//CreateByFile();

public static void CreateByFile()
{
  //创建XML读取器,读取XML文件
    XmlReader reader = XmlReader.Create( "G:\\path" );
    Console.WriteLine( "All Text in books.xml:\n" );
    while (reader.Read())
    {        
        if (reader.NodeType == XmlNodeType.Text)
       {
            Console.WriteLine(reader.Value);
       }
    }
    reader.Close();
}

//CreateByFileStream

 public static void CreateByFileStream(string src)
        {

            FileStream fs = new FileStream(src, FileMode.Open);
            XmlReader reader = XmlReader.Create(fs); //创建XML读取器,读取XML文件流
          

            while (!reader.EOF && ) //循环查找节点,直到最后一个节点
            {
                if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "Raw" )

                {

                  DisplayElementString(reader);

                 }
          

                else
                {
                    reader.Read();
                }
            }
            reader.Close();
            fs.Close();
        }

public static void DisplayElementString(XmlReader reader)
        {
            try
            {
                Console.WriteLine(reader.ReadElementString());
            }
            //捕捉不包含文本内容的元素抛出的异常
            catch (XmlException e)
            { }

        }

//ReadAttribute相当于可以读取每一节点的属性

//通过AttributeCount这个成员来判断属性是否读取完全

public static void ReadAttribute()
{
    XmlReader reader = XmlReader.Create( "G:\\path" );
    Console.WriteLine( "\nAttribute:\n" );
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        {
            //迭代其所有属性 
            for ( int i = 0; i < reader.AttributeCount; i++)
            {
                Console.WriteLine(reader.GetAttribute(i));
            }
        }
    }
    reader.Close();

}

大致的记录如上~

ps:最后是记得加~

using System.Xml;