使用.NET更改XML根节点(名称+命名空间)的最佳方法

时间:2014-06-06 07:54:06

标签: c# .net xml stream

我想在C#中以编程方式更改XML文档中的根节点和命名空间。我遇到了几个主要使用XmlDocument的不同解决方案。

最常见的解决方案是将整个文档加载到内存中,替换整个节点,然后将InnerXml设置为原始根目录的InnerXml

当你需要的只是一个节点时,将整个XML文档加载到内存中似乎有点愚蠢。对于任何大小的XML,这应该能够快速地工作。

示例:

<MyDocument xmlns="http://question.stackoverflow.com">
    <AfewKilobytesOfXML />
</MyDocument>

可能成为:

<YourDocument xmlns="http://answer.stackoverflow.com">
    <AfewKilobytesOfXML />
</YourDocument>

最好的情况是文档正文被完全忽略,并且不会像内存那样加载到内存中。

我想提供一些我尝试过的东西,但我甚至不知道哪些类是最好的。

输入为Stream。很高兴知道:Stream可能根本不包含XML,如果你的答案有检查,那么奖励积分。

1 个答案:

答案 0 :(得分:1)

如果你想避免将整个xml文件加载到内存中,我会说看一下XmlTextReader和XmlTextWriter。这些类用于逐节点处理XML文件,而无需将整个文档加载到内存中。

请参阅此链接中使用的各种方法:http://www.codeproject.com/Articles/15278/How-to-Append-to-a-Large-XML-File