我正在尝试尽可能快地阅读以下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 .
听起来很简单!
我有一些巨大的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异常或允许程序提取更多的内存.
我需要解决的情况:
我的客户有一些非常大的 .xlsx 文件,类似于数据库表(每行是一条记录,列是字段)
我需要帮助他们处理这些文件(搜索、过滤等)。
我的意思是其中最小的有 100 万条记录。
我尝试过的:
System.OverflowException,我的猜测是它基本上内存不足,因为一个 200MB 的 xlsx 文件已经占用了我 4GB 的内存来读取。由于保密,我无法共享实际文件,但您可以轻松创建一个类似的结构,其中包含 60 个列(名字、姓氏、dob 等)和大约 100 万条记录。
只要您可以读取具有该条件的 .xlsx 文件,删除一半的记录,然后写入另一个地方而不会遇到内存问题,这个问题就会解决。
如果有一种方法可以逐行缓慢地从文件中读取小块数据,那就太好了,但我发现的解决方案只能同时读取整个文件。
我必须解析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)