C# 讀取保存xml文件

直接讀取xml文件中的內容html

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

代碼來源:http://www.javashuo.com/article/p-awtrylht-t.htmlspa

這種方法存在一個缺點就是當xml文件中存在<!DOCTYPE>,eg:<!DOCTYPE nvidia_smi_log SYSTEM "nvsmi_device_v10.dtd"> 而你有缺乏了dtd文件會致使讀取xml文件報錯code

<!DOCTYPE>詳細:http://www.w3school.com.cn/tags/tag_doctype.aspxml

所以須要取消對該標籤的讀取,這是讀取nvidia-smi -p -x輸出出來的顯卡的顯存信息htm

 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();
相關文章
相關標籤/搜索