C# 读取保存xml文件

直接读取xml文件中的内容

         XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.LoadXml(result);
           XmlNode root = xmlDoc.SelectSingleNode("//response");
           if (root != null)
            {
                string error = (root.SelectSingleNode("error")).InnerText;
            }

代码来源:https://www.cnblogs.com/kongxiaoshuang/p/6512328.html

这种方法存在一个缺点就是当xml文件中存在<!DOCTYPE>,eg:<!DOCTYPE nvidia_smi_log SYSTEM "nvsmi_device_v10.dtd"> 而你有缺少了dtd文件会导致读取xml文件报错

<!DOCTYPE>详细:http://www.w3school.com.cn/tags/tag_doctype.asp

因此需要取消对该标签的读取,这是读取nvidia-smi -p -x输出出来的显卡的显存信息

复制代码
 private static void Getxml(ref string total, ref string free)
        {
            try
            {
                XmlDocument xmldoc = new XmlDocument();
                XmlReaderSettings setting = new XmlReaderSettings();
                setting.DtdProcessing = DtdProcessing.Ignore; //忽视dtd
                XmlReader reader = XmlReader.Create(savepath, setting);
                xmldoc.Load(reader);
                XmlNodeList topM = xmldoc.SelectNodes("//fb_memory_usage");
                foreach (XmlElement element in topM)
                {
                    total = element.GetElementsByTagName("total")[0].InnerText.Replace(" MiB","");
                    free = element.GetElementsByTagName("free")[0].InnerText.Replace(" MiB", "");
                }
                reader.Close();

            }
            catch (Exception)
            {
                total = "0.0";
                free = "0.0";
            }
            finally
            {
                if (File.Exists(savepath))
                {
                    File.Delete(savepath);
                }
            }
        }
复制代码

保存xml

   FileStream writeStream = new FileStream("E:\\aaaa.txt", FileMode.Create);
            XmlSerializer serializer = new XmlSerializer(data.GetType()); //xml对象
            serializer.Serialize(writeStream, data);
            writeStream.Close();

 

posted @   zebra_彬  阅读(4232)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示