操作代码封装

王朝学院·作者佚名  2016-05-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

[C#]对于xml操作代码封装对于XML读写操作,项目中经常要用到,之前木有好好总结过,例如LINQ TO XML也用过,这次无意发现XPATH对于XML的查询极为方便,索性把XML的操作总结以便后续方便使用。

1. 新增XML文件

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:\20140311blogs.xml");//xml保存路径或者读取路径 _xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点 _xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender _xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address _xmlHelper.Save();//保存xml文件

上述代码实现效果:

那在Person节点继续增加节点,实现也很简单

_xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点 _xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender _xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address XmlElement _workLh = _xmlHelper.CreateElec(_person, "Work", "shanghai LH");//在person节点下增加work节点 _xmlHelper.SetAttribute(_workLh, "Year", "2013~");//设置work节点属性Title XmlElement _workRK = _xmlHelper.CreateElec(_person, "Work", "shanghai Ranking");//在person节点下增加work节点 _xmlHelper.SetAttribute(_workRK, "Year", "2011~2013");//设置work节点属性Title _xmlHelper.Save();//保存xml文件

.csharpcode, .csharpcode PRe{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }上述代码实现效果:

 

2.读取节点的值,个人感觉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); });

.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }上述代码实现效果:

对于xpath语法,更多请参考:http://www.w3school.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"));

.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }上述代码实现效果:

 

4.XMLToolV2源代码

public class XMLToolV2 { static string _xmlPath; static XmlDocument _xmlDoc { get; set; } static XmlElement _xmlRoot; public XMLToolV2(string xmlPath) { _xmlPath = xmlPath; LoadXmlDoc()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航