C#读取XML字符串及将XML字符串反序列化为对象
在开发中遇到调用接口范围XML格式结果情况,获取结果中我们需要的信息则可能需要这两种数据处理;
1、如何将xml字符串转换为xml对象,及查询想要的节点;
通过XmlDocument对象加载xml字符串,如下代码:
XmlDocument document = new XmlDocument();
document.LoadXml(xmlStr);
XmlNamespaceManager nsManager = new XmlNamespaceManager(document.NameTable);
nsManager.AddNamespace("mdm", "http://tempuri.org/");
XmlNode? xmlNode = document.SelectSingleNode("/mdm:DictionaryQueryResponse/mdm:Result/mdm:Members", nsManager);
在之前使用SelectSingleNode时,发现一直获取不到xml的xpath路径的节点,最终查询得知xml也存在命名空间的概念,路径要表明命名空间,才能查询到,上面代码中命名空间管理器nsManager ,添加了命名空间mdm,mdm对应的就是xml的命名空间http://tempuri.org/,每个路径前加上mdm表明xml中路径;
2、如何将xml字符串转换为c#对象,以list对象为例:
public static List<T> XmlToList<T>(string xml, string rootName) where T : class
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName));
using (StringReader sr = new StringReader(xml))
{
List<T> list = serializer.Deserialize(sr) as List<T>;
return list;
}
}
方法如上,xml的根节点对应的就是方法参数rootName,XmlSerializer 实例反序列化为对象;
参考:
C#中SelectNodes找不到节点_没方向感的博客-CSDN博客_c# selectnodes
C#中读取XML文件方法_嘿嘿潶黑黑的博客-CSDN博客_c#读取xml文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构