在C#中跨XML文档导入节点须用XmlDocument.ImportNode避免异常,深拷贝后挂载到目标位置;命名空间需显式声明;新项目推荐XDocument自动处理上下文适配。

在C#中将一个XML文档的片段导入另一个文档,核心是**避免字符串拼接,而是用DOM节点操作保证格式和编码正确**。关键在于:源片段要被“导入”(ImportNode)到目标文档的上下文中,否则直接附加会抛出InvalidOperationException(“节点不属于此文档”)。
使用XmlDocument.ImportNode导入节点
ImportNode是跨文档操作的标准方式,它把源节点复制一份、适配到目标文档的命名空间和类型体系中。
- 调用
targetDoc.ImportNode(sourceNode, true)——第二个参数true表示深拷贝(包含所有子节点) - 再用
AppendChild、InsertBefore等方法将导入后的节点挂到目标位置 - 注意:
sourceNode必须来自XmlDocument,不能是XElement或字符串解析的临时节点(除非也用XmlDocument.LoadXml加载)
完整示例:把fragment.xml中的- 插入到main.xml的
下
// 假设 fragment.xml 内容为
// main.xml 已加载,且根元素为
标签: node 编码 app ai c# 字符串解析 .net
还木有评论哦,快来抢沙发吧~