源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#操作xml文件示例

  • 时间:2022-07-23 14:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#操作xml文件示例
1. 新增XML文件
[u]复制代码[/u] 代码如下:
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文件
上述代码实现效果: [img]http://files.jb51.net/file_images/article/201403/2014031214563135.png[/img] 那在Person节点继续增加节点,实现也很简单
[u]复制代码[/u] 代码如下:
_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文件
上述代码实现效果: [img]http://files.jb51.net/file_images/article/201403/2014031214563136.png[/img] 2.读取节点的值,个人感觉xpath方式比linq to xml更为明了方便
[u]复制代码[/u] 代码如下:
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); });
上述代码实现效果: [img]http://files.jb51.net/file_images/article/201403/2014031214563137.png[/img] 3.格式化显示XML
[u]复制代码[/u] 代码如下:
XMLToolV2 _xmlHelper = new XMLToolV2(@"C:\20140311blogs.xml");//xml保存路径或者读取路径 string _xmlString = _xmlHelper.ShowXml(); Console.WriteLine(XMLToolV2.FormatXml(_xmlString, "utf-8"));
上述代码实现效果: [img]http://files.jb51.net/file_images/article/201403/2014031214563138.png[/img] 4.XMLToolV2源代码
[u]复制代码[/u] 代码如下:
public class XMLToolV2     {         static string _xmlPath;         static XmlDocument _xmlDoc { get; set; }         static XmlElement _xmlRoot;         public XMLToolV2(string xmlPath)         {             _xmlPath = xmlPath;             LoadXmlDoc();         }         public XmlNode Select(string xPath)         {             if (string.IsNullOrEmpty(xPath))                 throw new ArgumentNullException("xPath");             return _xmlDoc.SelectSingleNode(xPath);         }         public XmlNodeList SelectNodeList(string xPath)         {             if (string.IsNullOrEmpty(xPath))                 throw new ArgumentNullException("xPath");             return _xmlDoc.SelectNodes(xPath);         }         public void Create(string rootName, string encode)         {             CreateXmlDoc(rootName, encode);         }         private void CreateXmlDoc(string rootName, string encode)         {             if (!File.Exists(_xmlPath))             {                 if (string.IsNullOrEmpty(rootName))                     throw new ArgumentNullException(rootName);                 _xmlDoc = new XmlDocument();                 XmlDeclaration _xmldecl = _xmlDoc.CreateXmlDeclaration("1.0", encode, null);                 _xmlDoc.AppendChild(_xmldecl);                 _xmlRoot = _xmlDoc.CreateElement("", rootName, "");                 _xmlDoc.AppendChild(_xmlRoot);             }         }         public void LoadXmlDoc()         {             if (File.Exists(_xmlPath))             {                 _xmlDoc = new XmlDocument();                 _xmlDoc.Load(_xmlPath);                 _xmlRoot = _xmlDoc.DocumentElement;             }         }         public void Save()         {             if (_xmlDoc != null)             {                 _xmlDoc.Save(_xmlPath);             }         }         public XmlElement CreateElec(string elecName, string elecValue)         {             XmlElement _xElec = CreateElement(_xmlRoot, elecName, elecValue);             return _xElec;         }         private XmlElement CreateElement(XmlNode _xmldocSelect, string elecName, string elecValue)         {             if (_xmldocSelect != null)             {                 XmlElement _xElec = _xmlDoc.CreateElement(elecName);                 _xElec.InnerText = elecValue;                 _xmldocSelect.AppendChild(_xElec);                 return _xElec;             }             return null;         }         public XmlElement CreateElec(XmlElement xmlParentElec, string elecName, string elecValue)         {             if (xmlParentElec != null)             {                 XmlElement _xElec = CreateElement(xmlParentElec, elecName, elecValue);                 return _xElec;             }             return null;         }         public void SetAttribute(XmlElement xElement, string attrName, string attrValue)         {             if (xElement != null)             {                 xElement.SetAttribute(attrName, attrValue);             }         }         public int Check(string xpath)         {             if (string.IsNullOrEmpty(xpath))                 throw new ArgumentNullException("xpath");             return SelectNodeList(xpath).Count;         }         public string ShowXml()         {             if (_xmlDoc != null)             {                 return _xmlDoc.OuterXml;             }             return string.Empty;         }         public static string FormatXml(string xmlString, string encode)         {             if (string.IsNullOrEmpty(xmlString))                 throw new ArgumentNullException("xmlString");             if (string.IsNullOrEmpty(encode))                 throw new ArgumentNullException("encode");             MemoryStream _mstream = new MemoryStream();             XmlTextWriter _writer = new XmlTextWriter(_mstream, null);             XmlDocument _xDoc = new XmlDocument();             _writer.Formatting = Formatting.Indented;             _xDoc.LoadXml(xmlString);             _xDoc.WriteTo(_writer);             _writer.Flush();             _writer.Close();             Encoding _encoding = Encoding.GetEncoding(encode);             string _xmlString = _encoding.GetString(_mstream.ToArray());             _mstream.Close();             return _xmlString;         }         public static void Loop(XmlNodeList nodeList, Action<XmlNode> xmlNode)         {             if (nodeList != null)             {                 foreach (XmlNode xNode in nodeList)                 {                     xmlNode(xNode);                 }             }         }     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部