對(duì)于XML讀寫(xiě)操作,項(xiàng)目中經(jīng)常要用到,之前木有好好總結(jié)過(guò),例如LINQ TO XML也用過(guò),這次無(wú)意發(fā)現(xiàn)XPATH對(duì)于XML的查詢極為方便,索性把XML的操作總結(jié)以便后續(xù)方便使用。
1. 新增XML文件
XMLToolV2 _xmlHelper = new XMLToolV2(@"C:/20140311blogs.xml");//xml保存路徑或者讀取路徑 _xmlHelper.Create("Person", "utf-8");//跟節(jié)點(diǎn)名稱:person;encode:utf-8 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟節(jié)點(diǎn)后創(chuàng)建person節(jié)點(diǎn) _xmlHelper.SetAttribute(_person, "Gender", "Man");//設(shè)置person節(jié)點(diǎn)屬性Gender _xmlHelper.SetAttribute(_person, "Address", "shanghai");//設(shè)置person節(jié)點(diǎn)屬性Address _xmlHelper.Save();//保存xml文件
上述代碼實(shí)現(xiàn)效果:
那在Person節(jié)點(diǎn)繼續(xù)增加節(jié)點(diǎn),實(shí)現(xiàn)也很簡(jiǎn)單
_xmlHelper.Create("Person", "utf-8");//跟節(jié)點(diǎn)名稱:person;encode:utf-8 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟節(jié)點(diǎn)后創(chuàng)建person節(jié)點(diǎn) _xmlHelper.SetAttribute(_person, "Gender", "Man");//設(shè)置person節(jié)點(diǎn)屬性Gender _xmlHelper.SetAttribute(_person, "Address", "shanghai");//設(shè)置person節(jié)點(diǎn)屬性Address XmlElement _workLh = _xmlHelper.CreateElec(_person, "Work", "shanghai LH");//在person節(jié)點(diǎn)下增加work節(jié)點(diǎn) _xmlHelper.SetAttribute(_workLh, "Year", "2013~");//設(shè)置work節(jié)點(diǎn)屬性Title XmlElement _workRK = _xmlHelper.CreateElec(_person, "Work", "shanghai Ranking");//在person節(jié)點(diǎn)下增加work節(jié)點(diǎn) _xmlHelper.SetAttribute(_workRK, "Year", "2011~2013");//設(shè)置work節(jié)點(diǎn)屬性Title _xmlHelper.Save();//保存xml文件
上述代碼實(shí)現(xiàn)效果:
2.讀取節(jié)點(diǎn)的值,個(gè)人感覺(jué)xpath方式比linq to xml更為明了方便
XMLToolV2 _xmlHelper = new XMLToolV2(@"C:/20140311blogs.xml");//xml保存路徑或者讀取路徑 XmlNode _person = _xmlHelper.Select("Person/Name/text()"); Console.WriteLine("Name:" + _person.InnerText); XmlNode _gender = _xmlHelper.Select("Person/Name[@Gender='Man']"); Console.WriteLine("Gender:" + _gender.Attributes["Gender"].Value); Console.WriteLine("Address:" + _gender.Attributes["Address"].Value); Console.WriteLine("-----------------------------"); XmlNodeList _workRecord = _xmlHelper.SelectNodeList("Person/Name/Work"); XMLToolV2.Loop(_workRecord, (XmlNode node) => { Console.WriteLine("Work:" + node.InnerText + " Year:" + node.Attributes["Year"].Value); });
上述代碼實(shí)現(xiàn)效果:
對(duì)于xpath語(yǔ)法,更多請(qǐng)參考:http://www.survivalescaperooms.com.cn/xquery/index.asp
3.格式化顯示XML
XMLToolV2 _xmlHelper = new XMLToolV2(@"C:/20140311blogs.xml");//xml保存路徑或者讀取路徑 string _xmlString = _xmlHelper.ShowXml(); Console.WriteLine(XMLToolV2.FormatXml(_xmlString, "utf-8"));上述代碼實(shí)現(xiàn)效果:
4.XMLToolV2源代碼
public class XMLToolV2 { static string _xmlPath; static XmlDocument _xmlDoc { get; set; } static XmlElement _xmlRoot; public XMLToolV2(string xmlPath) { _xmlPath = xmlPath; LoadXmlDoc()
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注