直接讀取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();