我想在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,如果你的答案有检查,那么奖励积分。
答案 0 :(得分:1)
如果你想避免将整个xml文件加载到内存中,我会说看一下XmlTextReader和XmlTextWriter。这些类用于逐节点处理XML文件,而无需将整个文档加载到内存中。
请参阅此链接中使用的各种方法:http://www.codeproject.com/Articles/15278/How-to-Append-to-a-Large-XML-File