如何在C#3.5中进行流读取大型XML文件

前端之家收集整理的这篇文章主要介绍了如何在C#3.5中进行流读取大型XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在包含xs:sequence的大型 XML文件上进行流读取,只是在根元素下面,而不是将整个文件加载到内存中的XDocument实例中?

解决方法

使用SAX风格的元素解析器和 XmlReader.Create创建的 XmlTextReader类将是一个好主意,是的.这是 CodeGuru稍微修改后的代码示例:
void ParseURL(string strUrl)
{
  try
  {
    using (var reader = XmlReader.Create(strUrl))
    {
      while (reader.Read())
      {
        switch (reader.NodeType)
        {
          case XmlNodeType.Element:
            var attributes = new Hashtable();
            var strURI = reader.NamespaceURI;
            var strName = reader.Name;
            if (reader.HasAttributes)
            {
              for (int i = 0; i < reader.AttributeCount; i++)
              {
                reader.MoveToAttribute(i);
                attributes.Add(reader.Name,reader.Value);
              }
            }
            StartElement(strURI,strName,attributes);
            break;
            //
            //you can handle other cases here
            //
            //case XmlNodeType.EndElement:
            // Todo
            //case XmlNodeType.Text:
            // Todo
            default:
            break;
          }
        }
      }
      catch (XmlException e)
      {
        Console.WriteLine("error occured: " + e.Message);
      }
    }
  }
}

猜你在找的C&C++相关文章