小编use*_*427的帖子

当超过int.Maxvalue时,如何在xml文件中获取行号

我无法在近300 GB的xml文件中获取linenumber.IXmlLineInfo.LineNumber是一个int32,当它超过int.MaxValue时,返回一个负数.如果我使用int或long来存储亚麻布,那就没有区别了.Xmlreader能够读取到eof.使用.net 2.0和最新版本也使用int32.

public void ReadLines()
    {
        long readcounter = 0;
        long linenumber = 0;
        fname = "I:\\XML Files\\europe-latest.osm";
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ProhibitDtd = false;
        settings.XmlResolver = null;
        XmlReader reader = XmlReader.Create(fname, settings);

        IXmlLineInfo lineInfo = ((IXmlLineInfo)reader);
        try
        {
            while (reader.Read())
            {
                linenumber = lineInfo.LineNumber;
                readcounter++;
                if (readcounter % 1000000 == 0) Console.WriteLine(linenumber.ToString());
            }
        }
        catch (XmlException ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        }
        finally
        {
            reader.Close();
            Console.WriteLine(DateTime.Now.ToLongTimeString());
        }

    }
Run Code Online (Sandbox Code Playgroud)

.net c# xml

6
推荐指数
1
解决办法
742
查看次数

标签 统计

.net ×1

c# ×1

xml ×1