相关疑难解决方法(0)

如何解析XML文件?

有一种在C#中解析XML文件的简单方法吗?如果是这样,什么?

c# xml

492
推荐指数
9
解决办法
39万
查看次数

在C#中使用XmlReader读取Xml

我正在尝试尽可能快地阅读以下Xml文档,并让其他类管理每个子块的读取.

<ApplicationPool>
    <Accounts>
        <Account>
            <NameOfKin></NameOfKin>
            <StatementsAvailable>
                <Statement></Statement>
            </StatementsAvailable>
        </Account>
    </Accounts>
</ApplicationPool>
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试使用XmlReader对象来读取每个帐户,然后使用"StatementsAvailable".你建议使用XmlReader.Read并检查每个元素并处理它吗?

我想过分离我的类来正确处理每个节点.所以这是一个AccountBase类,它接受一个XmlReader实例,该实例读取NameOfKin和该帐户的其他几个属性.然后我想要通过语句进行交互,让另一个类填写有关语句(并随后将其添加到IList).

到目前为止,我通过执行XmlReader.ReadElementString()来完成"每个类"部分,但是我无法训练如何告诉指针移动到StatementsAvailable元素并让我遍历它们并让另一个类读取每个proeprties .

听起来很简单!

c# xml xmlreader

90
推荐指数
5
解决办法
32万
查看次数

如何解决C#中的OutOfMemory异常?

我有一些巨大的xml文件,1 + gb.我需要对它们进行一些过滤操作.我想出的最简单的想法是将它们保存为txt和ReadAllText,并开始执行一些操作,如

  var a = File.ReadAllText("file path");
  a = a.Replace("<", "\r\n<");
Run Code Online (Sandbox Code Playgroud)

然而,在我尝试这样做的那一刻,程序崩溃了内存.我在运行它时看着我的任务管理器,RAM使用率上升到50%,当它达到它时,程序就会死掉.

有没有人对我如何操作此文件有任何想法,避免OutOfMemory异常或允许程序提取更多的内存.

c#

5
推荐指数
1
解决办法
110
查看次数

如何使用 C# 处理极大的 .xlsx 文件

我需要解决的情况

我的客户有一些非常大的 .xlsx 文件,类似于数据库表(每行是一条记录,列是字段)

我需要帮助他们处理这些文件(搜索、过滤等)。

我的意思是其中最小的有 100 万条记录。


我尝试过的:

  • SheetJS 和 NPOI:两个库都只回复一个简单的“文件太大”。
  • EPPlus:可以读取多达数百 K 条记录的文件,但是当面对实际文件时,它只会给我一个 . System.OverflowException,我的猜测是它基本上内存不足,因为一个 200MB 的 xlsx 文件已经占用了我 4GB 的内存来读取。
  • 我没有尝试 Microsoft OleDB,但我宁愿避免它,因为我不想为了工作而购买 Microsoft Office。

由于保密,我无法共享实际文件,但您可以轻松创建一个类似的结构,其中包含 60 个列(名字、姓氏、dob 等)和大约 100 万条记录。

只要您可以读取具有该条件的 .xlsx 文件,删除一半的记录,然后写入另一个地方而不会遇到内存问题,这个问题就会解决

  • 时间不是太大的问题。如果需要,用户愿意等待一两个小时的结果。
  • 内存似乎是当前的问题。这是个人要求,客户的机器是一台内存上限为 8GB 的​​笔记本电脑。
  • csv不是这里的选项。我的客户有 .xlsx 输入并且需要 .xlsx 输出。
  • 语言选择最好是 JS,C# for Python,因为我已经知道如何用它们创建可执行文件(不能告诉会计师学习终端,我们可以吗?)。

如果有一种方法可以逐行缓慢地从文件中读取小块数据,那就太好了,但我发现的解决方案只能同时读取整个文件。

c# excel memory-management

2
推荐指数
1
解决办法
736
查看次数

在c#中解析80 Gb XML文件

我必须解析80 GB的XML才能从该文件中获取一些数据.我为此目的使用了XML阅读器.当我用304 MB文件检查代码时.然后它在4秒内解析文件.所以我认为我将工作80 GB.但它在一分钟之后给了我异常的记忆.

我有以下代码:

static void Main(string[] args)
    {

        List<Test> lstTest = new List<Test>();
        bool isTitle = false;
        bool isText = false;

        using (XmlReader Reader = XmlReader.Create(FilePath))
        {
            Test tt = new Test();
            while (Reader.Read())
            {                    switch (Reader.NodeType)
                {
                    case XmlNodeType.Element:
                        if (Reader.Name == "title")
                        {
                            isTitle = true;
                        }
                        if (Reader.Name == "text")
                        {
                            isText = true;
                        }
                        break;
                    case XmlNodeType.Text:
                        if (isTitle)
                        {
                            tt.Title = Reader.Value;
                            isTitle = false;
                        }

                        if (isText)
                        {
                            tt.Text = Reader.Value;
                            isText …
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×5

xml ×2

excel ×1

memory-management ×1

xmlreader ×1