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

举报
Jet Ding 发表于 2020/09/30 17:39:24 2020/09/30
【摘要】 本文旨在为读取超大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

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

全部回复

上滑加载中

设置昵称

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

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

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