可采用五种方法将XML节点映射为C# Dictionary:一、XmlDocument遍历;二、LINQ to XML;三、递归解析嵌套结构;四、XmlSerializer配合自定义类;五、处理属性型XML。

如果您需要将XML节点的内容解析并映射为C#中的Dictionary对象,则需根据XML结构提取键值对。以下是实现此目标的多种方法:
一、使用XmlDocument遍历节点生成Dictionary
该方法适用于结构清晰、每个子节点代表一个键值对的XML片段,通过手动遍历XmlElement的子节点,提取节点名作为键、节点文本作为值。
1、创建XmlDocument实例,并调用LoadXml或Load方法加载XML字符串或文件。
2、获取根元素下的所有直接子节点,过滤出XmlElement类型节点。
3、对每个XmlElement节点,以节点名称为键,InnerText为值,添加到Dictionary
4、跳过注释、空白文本节点等非元素节点,确保仅处理有效键值节点。
二、使用LINQ to XML解析并构建Dictionary
该方法利用XDocument和LINQ查询语法,代码更简洁,支持函数式风格转换,适合.NET 3.5及以上版本。
1、调用XDocument.Parse或XDocument.Load加载XML数据。
2、使用Descendants或Elements方法定位目标层级的子节点集合。
3、对每个节点,构造匿名对象或元组,其中Key = node.Name.LocalName,Value = node.Value.Trim()。
4、调用ToDictionary扩展方法,传入keySelector和elementSelector,生成Dictionary
三、递归解析嵌套XML节点为嵌套Dictionary
当XML包含多层嵌套结构(如子节点内含子节点),需将父节点映射为Dictionary
1、定义递归方法,参数为XElement,返回类型为object。
2、若当前XElement无子元素,则返回其Trimmed Value字符串。
3、若存在子元素,则新建Dictionary
4、对同名重复子节点,自动合并为List
四、使用XmlSerializer配合自定义类间接转Dictionary
该方法不直接生成Dictionary,而是先反序列化为强类型对象,再通过反射或扩展方法将其属性-值对导出为Dictionary,适用于有固定Schema的XML。
1、定义与XML结构匹配的C#类,各属性标注[XmlElement]或[XmlAttribute]。
2、使用XmlSerializer.Deserialize将XML流反序列化为该类型实例。
3、调用GetType().GetProperties()获取所有公共属性。
4、对每个PropertyInfo,以Property.Name为键,Property.GetValue(instance)为值,加入Dictionary
五、处理属性型XML结构转Dictionary
当XML节点的键值信息全部存储在attribute中(如
1、加载XML后,定位到目标XElement节点。
2、调用Attributes()获取所有XAttribute集合。
3、对每个XAttribute,以attr.Name.LocalName为键,attr.Value为值,填入Dictionary
4、忽略xmlns等命名空间声明属性,可通过检查attr.Name.Namespace == XNamespace.None进行过滤。










