如何读取超大XML文件-Asp.Net Core?

举报
Jet Ding 发表于 2020/09/30 17:39:24 2020/09/30
4k+ 0 0
【摘要】 本文旨在为读取超大XML文件提供一种解决方案。测试环境: .Net Core 3.1测试文件:73G代码: var file = Path.Combine("D:/data/stackoverflow/stackoverflow.com-Posts", "", "", "Posts.xml"); using (Xml...

本文旨在为读取超大XML文件提供一种解决方案。

测试环境: .Net Core 3.1
测试文件:73G

代码:

  var file = Path.Combine("D:/data/stackoverflow/stackoverflow.com-Posts",
                           """""Posts.xml");



            using (XmlReader reader = XmlReader.Create(file)) 
            { 
                while (reader.Read()) 
                { 
                    switch (reader.NodeType) 
                    { 
                        case XmlNodeType.Element: 

                            if (reader.HasAttributes) 
                            { 
                                Console.WriteLine("Attributes of <" + reader.Name + ">"); 
                                while (reader.MoveToNextAttribute()) 
                                { 
                                    Console.WriteLine(" {0}={1}"reader.Namereader.Value); 
                                } 
                                // Move the reader back to the element node. 
                                reader.MoveToElement(); 
                            } 
                         
                            break; 
                        case XmlNodeType.Text: 
                            Console.Write(reader.Value); 
                            break; 
                        case XmlNodeType.CDATA: 
                            Console.Write("<![CDATA[{0}]]>"reader.Value); 
                            break; 
                        case XmlNodeType.ProcessingInstruction: 
                            Console.Write("<?{0} {1}?>"reader.Namereader.Value); 
                            break; 
                        case XmlNodeType.Comment: 
                            Console.Write("<!--{0}-->"reader.Value); 
                            break; 
                        case XmlNodeType.XmlDeclaration: 
                            Console.Write("<?xml version='1.0'?>"); 
                            break; 
                        case XmlNodeType.Document: 
                            break; 
                        case XmlNodeType.DocumentType: 
                            Console.Write("<!DOCTYPE {0} [{1}]"reader.Namereader.Value); 
                            break; 
                        case XmlNodeType.EntityReference: 
                            Console.Write(reader.Name); 
                            break; 
                        case XmlNodeType.EndElement: 
                            Console.Write("</{0}>"reader.Name); 
                            break; 
                    } 
                } 
            } 

读取结果

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。