如何将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
相关产品推荐
相关产品推荐

