You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将XDocument转换为XMLDocument?附XML处理代码咨询

XDocument 转 XmlDocument 实现方案

嘿,我来帮你搞定这个转换问题~先看看你提供的现有代码片段,再给你两种靠谱的实现方式:

你的现有XML处理代码

DataTable table = new DataTable();
List<string> headingNames = new List<string>();
List<string> valueNames = new List<string>();

//第一个XML文件
XDocument config = XDocument.Load(configFile);
Dictionary<string, string> dict = config.Descendants("Columns").FirstOrDefault().Elements()
    .GroupBy(x => (string)x.Attribute("XPath"), y => (string)y.Attribute("Name"))
    .ToDictionary(x => x.Key, y => y.FirstOrDefault());

实现XDocument到XmlDocument的转换

在.NET框架中,有两种常用的方法可以完成这个转换,各有适用场景:

方法一:使用XmlReader作为中间媒介

这种方法性能更优,尤其是处理大型XML文件时,通过XDocument.CreateReader()生成XmlReader,再让XmlDocument加载这个读取器:

// 复用你代码里已有的XDocument实例config
XmlDocument xmlDoc = new XmlDocument();

using (XmlReader reader = config.CreateReader())
{
    xmlDoc.Load(reader);
}

小贴士:一定要用using包裹XmlReader,确保资源被正确释放,避免内存泄漏哦。

方法二:通过字符串序列化中转

如果你的XML文件不大,这种方法代码更简洁,先把XDocument序列化为字符串,再用XmlDocument加载该字符串:

// 同样使用你已有的XDocument实例config
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(config.ToString());

不过要注意:这种方法会生成中间字符串,处理超大XML时内存占用会更高,所以根据你的文件大小选择就好。

另外,如果你之后需要反向转换(XmlDocument转XDocument),也可以用类似的思路:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(configFile);
XDocument config = XDocument.Load(new XmlNodeReader(xmlDoc));

内容的提问来源于stack exchange,提问作者Lizzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:26:02