【发布时间】:2014-08-20 01:37:23
【问题描述】:
我有一个无法加载到内存中的超大文件。
现在我需要在指定位置插入文本。
插入前:
<?xml version="1.0" encoding="UTF-8"?>
<Schema>
<Line>1</Line>
<Line>2</Line>
......
<Line>999999</Line>
</Schema>
插入后:
<?xml version="1.0" encoding="UTF-8"?>
<Schema>
<total>999999</total>
<Line>1</Line>
<Line>2</Line>
......
<Line>999999</Line>
</Schema>
谁能提供一些建议来做这样的事情?
背景:
我的真实情况是我为一个新创建的文件打开一个文件流。然后我用这个流创建一个 XmlWriter。
当每一行到来时,我用 XmlWriter 将相应的元素写入文件流。
但是我需要在文件的开头放置一些信息,这些信息只有在写完所有行之后才能得到,例如总行数。
感谢任何帮助。
【问题讨论】:
-
你可以在开头保留一些空间吗,例如添加
<total>********</total>然后就地修补数据?不是很优雅,但快速而直接。 -
您确定总数必须在顶部吗?我不相信 XML 1.0 规范将元素顺序定义为重要的。当然,使用您的 xml 的应用程序可能......
-
@AlexD:但是不知道要预留多少空间,不然打补丁后还有多余的空间。
-
@Blorgbeard:实际上受影响的客户是我的痛点。客户必须读取千兆字节才能获得总价值。
-
@FengZhao-MSFT 你可以在
<total>之后添加这些额外的空格。
标签: c# xml stream large-files xmlwriter