1,繼續添加ebm子節點
public static void CreateXml() { //創XML建對象 XmlDocument doc = new XmlDocument(); //聲明根節點 XmlElement books; //判斷文件是否存在 if (File.Exists("d://Test.xml")) { //該文件存在 //加載文件 doc.Load("d://Test.xml"); //獲得根節點 books = doc.DocumentElement; } else//該文件不存在 { //創建聲明 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); doc.AppendChild(dec); //創建根節點 books = doc.CreateElement("EBD"); doc.AppendChild(books); } //開始正常寫入信息就可以了 XmlElement xml = doc.CreateElement("EBM"); books.AppendChild(xml); XmlElement ebmId = doc.CreateElement("EBMID"); ebmId.InnerText = "1"; xml.AppendChild(ebmId); XmlElement areaCode = doc.CreateElement("AreaCode"); areaCode.InnerText = "360699999901"; xml.AppendChild(areaCode); XmlElement startTime = doc.CreateElement("StartTime"); startTime.InnerText = "2018-07-26 9:06:04"; xml.AppendChild(startTime); XmlElement endTime = doc.CreateElement("EndTime"); endTime.InnerText = "2018-07-26 7:22:04"; xml.AppendChild(endTime); XmlElement msgType = doc.CreateElement("MsgType"); msgType.InnerText = "1"; xml.AppendChild(msgType); doc.Save("d://Test.xml"); }
2, 修改某個子節點(通過EBMID確定具體的節點)
public static void UpdateXmlForEBMID(string ebmId) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("d://Test.xml"); var xns = xmlDoc.SelectSingleNode("EBD"); XmlNodeList xnl = xns.ChildNodes; foreach(XmlNode xn in xnl ) { XmlElement xe = (XmlElement)xn; XmlNodeList xnl2 = xe.ChildNodes; foreach (XmlNode xn2 in xnl2) { XmlElement xe2 = (XmlElement)xn2; if (xe2.InnerText.Equals(ebmId)) { XmlNodeList elemList = xe.GetElementsByTagName("MsgType"); elemList[0].InnerXml = "2"; } break; } //break;//如果更新完了指定節點,有需要則退出循環 } xmlDoc.Save("d://Test.xml");//保存的該XML文件,否則更新無效 }
3,讀取某個子節點下的所有屬性值(這邊也是通過EBMID去匹配)
public static void ReadXMLForLog(string xmlPath,string ebmId) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("d://Test.xml"); var xns = xmlDoc.SelectSingleNode("EBD"); XmlNodeList xnl = xns.ChildNodes; Dictionary<string, string> obj = new Dictionary<string, string>(); foreach (XmlNode xn in xnl) { XmlElement xe = (XmlElement)xn; XmlNodeList xnl2 = xe.ChildNodes; foreach (XmlNode xn2 in xnl2) { XmlElement xe2 = (XmlElement)xn2; if (xe2.InnerText.Equals("2")) { var objs = new { EBMID = xe.GetElementsByTagName("EBMID"), AreaCode = xe.GetElementsByTagName("AreaCode"), StartTime= xe.GetElementsByTagName("StartTime"), EndTime = xe.GetElementsByTagName("EndTime"), MsgType = xe.GetElementsByTagName("MsgType"), }; string ebmIdValue = objs.EBMID[0].InnerText; } break; } } }