社区
C#
帖子详情
C# 操作大xml文件(200M),进行节点删除,有没有比较高效的办法
muscle090620118
2014-11-12 04:34:54
有一个特定格式的xml文件,但是文件很大,动辄上百兆,现在需要删除xml中的某些node,再保存。
目前傻瓜式做法是,定义一个XmlDocument,一次性load到内存,然后循环节点进行删除。
这样做会导致服务器内存爆掉的。。
想问下有没有类似步进读取并删除的方法,或者其他有没有什么高效的处理方式。
...全文
256
9
打赏
收藏
C# 操作大xml文件(200M),进行节点删除,有没有比较高效的办法
有一个特定格式的xml文件,但是文件很大,动辄上百兆,现在需要删除xml中的某些node,再保存。 目前傻瓜式做法是,定义一个XmlDocument,一次性load到内存,然后循环节点进行删除。 这样做会导致服务器内存爆掉的。。 想问下有没有类似步进读取并删除的方法,或者其他有没有什么高效的处理方式。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dlx_2632641148
2014-11-13
打赏
举报
回复
操作删除XML文件节点 protected void Button1_Click(object sender, EventArgs e) { if (TextBox1.Text.Trim() != "") { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("LeaveWord.xml")); XmlNodeList nodes; XmlElement root = doc.DocumentElement; nodes = root.SelectNodes("descendant::LW[ID='" + TextBox1.Text.Trim() + "']"); foreach (XmlNode node in nodes) { root.RemoveChild(node); } TextBox1.Text = ""; Response.Write("<script>alert('恭喜你!删除成功');location=javascript:history:go(-1)</script>"); doc.Save(Server.MapPath("LeaveWord.xml")); XslTransform trans = new XslTransform(); trans.Load(Server.MapPath("LeaveWord.xsl")); Xml1.Document = doc; Xml1.Transform = trans; } else { Response.Write("<script>alert('请输入要删除的编号!');;location=javascript:history:go(-1)</script>"); } }
以专业开发人员为伍
2014-11-13
打赏
举报
回复
引用 楼主 muscle090620118 的回复:
想问下有没有类似步进读取并删除的方法,或者其他有没有什么高效的处理方式。
此时没有办法“并删除”。只能一边读取,一边复制到另一个200M的文件中——做为删除结果。
Pigeon汪
2014-11-13
打赏
举报
回复
XmlWriter 类:表示提供快速,非缓存的编写器,其中包含 XML 数据的非模式生成流或文件。 XmlReader 类:表示提供对 XML 数据进行快速、非缓存、只进访问的读取器。
threenewbee
2014-11-12
打赏
举报
回复
按照文本文件的方式逐行读取,如果你的xml有特定的结构,你能保证这一点的话。
save4me
2014-11-12
打赏
举报
回复
有没有试过微软MSDN上的
修改大型 XML 文件的有效方法
虽然这篇文章很老,但是
Performance: LINQ to XML vs XmlDocument vs XmlReader
,这种方法效率还是不错的。 还有可以结合XmlReader和LinQ的
XNode.ReadFrom 方法
看一下
exception92
2014-11-12
打赏
举报
回复
一次性加载到内存太残暴,用1或者2楼的方法。
熙风
2014-11-12
打赏
举报
回复
你这是把xml当数据库在用啊
bdmh
2014-11-12
打赏
举报
回复
XmlTextReader
Forty2
2014-11-12
打赏
举报
回复
高效的办法,就是不要用xml作为大数据的存储。 抛开效率,内存问题倒是可以用XmlReader和XmlWriter来解决。
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
C#
中
操作
xml文件
(插入
节点
、修改、
删除
).htm
c#
读取
xml文件
增加结点
删除
节点
并在listview中显示
xml文件
内容
c#
读取
xml文件
增加结点
删除
节点
并在listview中显示
xml文件
内容
C#
XML
操作
类库(加强版)
最近做项目,要用
C#
写,而且数据格式是那种
节点
套
节点
能把人套死的XML,看着都觉得晕,而且
节点
跳跃性很大,真心觉得单纯用环境自带的XMLDocument类完全达不到自己的需要,因为XML里面涉及到
节点
循环,循环里面又套循环,说到这,我已经不想吐槽了,foreach是个好东西,但是套太多绝对是麻烦,不如封装成一个类库,自己想要的功能都加进去(较之前写的那个增加了
节点
,注释
节点
,带有属性
节点
的封装,以及附加了测试例子,功能很强大,也可以自己动手添加自己需要的方法),好了,0分分享!!!!!!;
treeview右键添加
删除
节点
,并保存
节点
到xml里面
vs 2005 写的一个右键添加
删除
treeview
节点
,并保存
节点
信息到
xml文件
里
(
c#
)XmlHelper
自己整理的一个Xml
操作
类,包括文件的创建、
节点
添加、
删除
、修改
操作
以及
节点
属性的添加、
删除
、修改
操作
。
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章