1. XML绑定TreeView
  2. private void XmlOperation_Load(object sender, EventArgs e)
  3. {
  4. path = AppDomain.CurrentDomain.BaseDirectory + @"NameList.xml";
  5. xml.Load(path);//加载xml文件
  6. bindTvXml();
  7. }
  8. /// <summary>
  9. /// 绑定TreeView
  10. /// </summary>
  11. private void bindTvXml()
  12. {
  13. for (int i = 0; i < xml.DocumentElement.ChildNodes.Count; i++)
  14. {
  15. XmlNode Xnode = xml.DocumentElement.ChildNodes[i];
  16. TreeNode node = new TreeNode();
  17. node.Text = Xnode.Attributes["name"].Value;
  18. node.Tag = Xnode;
  19. bindChildNode(node, Xnode);//绑定子节点
  20. TvXml.Nodes.Add(node);
  21. TvXml.HideSelection = false;
  22. }
  23. }
  24. /// <summary>
  25. /// 递归绑定子节点
  26. /// </summary>
  27. /// <param name="node"></param>
  28. /// <param name="xml"></param>
  29. private void bindChildNode(TreeNode node, XmlNode xml)
  30. {
  31. for (int i = 0; i < xml.ChildNodes.Count; i++)
  32. {
  33. TreeNode Childnode = new TreeNode();
  34. XmlNode ChildXml = xml.ChildNodes[i];
  35. Childnode.Text = ChildXml.Value;
  36. Childnode.Name = "1";
  37. Childnode.Tag = xml.ChildNodes[i];
  38. if (ChildXml.HasChildNodes)
  39. {
  40. if (ChildXml.ChildNodes[0].NodeType == XmlNodeType.Text)
  41. Childnode.Text = ChildXml.ChildNodes[0].InnerText;
  42. else
  43. bindChildNode(Childnode, ChildXml);
  44. }
  45. node.Nodes.Add(Childnode);
  46. }
  47. }
  48. public class ManageXML
  49. {
  50. /// <summary>
  51. /// 返回用户操作的SQL语句
  52. /// </summary>
  53. /// <param name="sqlNodeName">XML的操作节点</param>
  54. /// <returns>操作的sql语句</returns>
  55. public static string GetXMLPath(string strXMlFileName)
  56. {
  57. string m_strFullPath = "";
  58. Assembly Asm = Assembly.GetExecutingAssembly();
  59. //获取文件的路径
  60. //m_strFullPath = Asm.Location.Substring(0, (Asm.Location.LastIndexOf("\\") + 1)) + "XMLSql.xml";
  61. m_strFullPath = AppDomain.CurrentDomain.BaseDirectory + "XMLLibrary\\" + strXMlFileName;
  62. return m_strFullPath;
  63. }
  64. /// <summary>
  65. /// 获取XML数据库中的数据的方法
  66. /// </summary>
  67. /// <param name="strFilePath">传入文件路径</param>
  68. /// <returns>返回一个数据集</returns>
  69. public static DataSet GetAllDataFromXML(string strFilePath)
  70. {
  71. DataSet ds = new DataSet();
  72. FileInfo fileInfo = new FileInfo(strFilePath);
  73. if (fileInfo.Exists)
  74. {
  75. try
  76. {
  77. ds.ReadXml(strFilePath);
  78. }
  79. catch { }
  80. }
  81. else
  82. {
  83. ds = null;
  84. }
  85. if (ds != null)
  86. {
  87. if (ds.Tables[0].Rows.Count < 1)
  88. ds = null;
  89. }
  90. return ds;
  91. }
  92. /// <summary>
  93. /// 获取指定目录下所有子节点的值
  94. /// </summary>
  95. /// <param name="strFileName">文件路径</param>
  96. /// <param name="nodeDir">节点目录</param>
  97. /// <returns></returns>
  98. public static  Hashtable GetNodeList(string strFileName, string nodeDir)
  99. {
  100. Hashtable strNodeList = new Hashtable();
  101. try
  102. {
  103. XmlDocument xmlDoc = new XmlDocument();
  104. xmlDoc.Load(strFileName);
  105. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  106. foreach (XmlNode xn in nodeList)     //遍历所有子节点
  107. {
  108. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  109. strNodeList.Add(xe.GetAttribute("id").ToString(), xe.InnerText.Trim());
  110. }
  111. }
  112. catch (Exception)
  113. {
  114. throw;
  115. }
  116. return strNodeList;
  117. }
  118. /// <summary>
  119. /// 获取指定节点的值
  120. /// </summary>
  121. /// <param name="strFileName">文件路径</param>
  122. /// <param name="nodeName">节点名称</param>
  123. /// <param name="value">设置后的值</param>
  124. /// <param name="nodeDir">指定节点所在的节点目录</param>
  125. /// <returns></returns>
  126. public static string GetNodeValue(string strFileName, string nodeName, string nodeDir)
  127. {
  128. string value = null;
  129. try
  130. {
  131. XmlDocument xmlDoc = new XmlDocument();
  132. xmlDoc.Load(strFileName);
  133. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  134. foreach (XmlNode xn in nodeList)    //遍历所有子节点
  135. {
  136. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  137. if (xe.Name == nodeName)
  138. {
  139. value = xe.InnerText.Trim();
  140. break;
  141. }
  142. }
  143. }
  144. catch (Exception exp)
  145. {
  146. throw exp;
  147. }
  148. return value;
  149. }
  150. /// <summary>
  151. /// 获取指定节点下面对应属性的值
  152. /// </summary>
  153. /// <param name="strFileName">文件路径</param>
  154. /// <param name="nodeName">节点名称</param>
  155. /// <param name="nodeDir">指定节点所在的节点目录</param>
  156. /// <param name="attribute">节点对应的属性名称</param>
  157. /// <returns></returns>
  158. public static string GetNodeValue(string strFileName, string nodeName, string nodeDir, string attribute)
  159. {
  160. string value = null;
  161. try
  162. {
  163. XmlDocument xmlDoc = new XmlDocument();
  164. xmlDoc.Load(strFileName);
  165. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  166. foreach (XmlNode xn in nodeList)    //遍历所有子节点
  167. {
  168. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  169. if (xe.Name == nodeName)
  170. {
  171. //value = xe.InnerText.Trim();
  172. value = (xe).Attributes[attribute].Value;
  173. break;
  174. }
  175. }
  176. }
  177. catch (Exception exp)
  178. {
  179. throw exp;
  180. }
  181. return value;
  182. }
  183. /// <summary>
  184. /// 修改指定结点值
  185. /// </summary>
  186. /// <param name="strFileName">文件路径</param>
  187. /// <param name="nodeName">节点名称</param>
  188. /// <param name="value">设置后的值</param>
  189. /// <param name="nodeDir">指定节点所在的节点目录</param>
  190. /// <returns></returns>
  191. public static bool UpdateNoteValue(string strFileName, string nodeName, string value, string nodeDir)
  192. {
  193. bool isSucceed = false;
  194. try
  195. {
  196. XmlDocument xmlDoc = new XmlDocument();
  197. xmlDoc.Load(strFileName);
  198. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  199. foreach (XmlNode xn in nodeList)    //遍历所有子节点
  200. {
  201. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  202. if (xe.Name == nodeName)
  203. {
  204. xe.InnerText = value;
  205. isSucceed = true;
  206. break;
  207. }
  208. }
  209. xmlDoc.Save(strFileName);
  210. }
  211. catch (Exception exp)
  212. {
  213. throw exp;
  214. }
  215. return isSucceed;
  216. }
  217. /// <summary>
  218. /// 修改指定结点值
  219. /// </summary>
  220. /// <param name="strFileName">文件路径</param>
  221. /// <param name="nodeName">节点名称</param>
  222. /// <param name="value">设置后的值</param>
  223. /// <param name="nodeDir">指定节点所在的节点目录</param>
  224. /// <returns></returns>
  225. public static bool UpdateNoteValue(string strFileName, string nodeName, string value, string nodeDir, string attribute, string attributeValue)
  226. {
  227. bool isSucceed = false;
  228. try
  229. {
  230. XmlDocument xmlDoc = new XmlDocument();
  231. xmlDoc.Load(strFileName);
  232. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  233. foreach (XmlNode xn in nodeList)    //遍历所有子节点
  234. {
  235. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  236. if (xe.Name == nodeName)
  237. {
  238. xe.InnerText = value;
  239. (xe).Attributes[attribute].Value = attributeValue;
  240. isSucceed = true;
  241. break;
  242. }
  243. }
  244. xmlDoc.Save(strFileName);
  245. }
  246. catch (Exception exp)
  247. {
  248. throw exp;
  249. }
  250. return isSucceed;
  251. }
  252. /// <summary>
  253. /// 修改指定结点值
  254. /// </summary>
  255. /// <param name="strFileName">文件路径</param>
  256. /// <param name="nodeName">节点名称</param>
  257. /// <param name="value">设置后的值</param>
  258. /// <param name="nodeDir">指定节点所在的节点目录</param>
  259. /// <returns></returns>
  260. public static bool UpdateNoteValue(string strFileName, Hashtable hstable, string nodeDir)
  261. {
  262. bool isSucceed = false;
  263. try
  264. {
  265. XmlDocument xmlDoc = new XmlDocument();
  266. xmlDoc.Load(strFileName);
  267. XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点
  268. foreach (DictionaryEntry item in hstable)
  269. {
  270. foreach (XmlNode xn in nodeList)    //遍历所有子节点
  271. {
  272. XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型
  273. if (xe.Name == item.Key.ToString())
  274. {
  275. xe.InnerText = item.Value.ToString();
  276. isSucceed = true;
  277. break;
  278. }
  279. }
  280. }
  281. xmlDoc.Save(strFileName);
  282. }
  283. catch (Exception exp)
  284. {
  285. throw exp;
  286. }
  287. return isSucceed;
  288. }
  289. }
  1. /// <summary>
  2. /// 移除选定节点集的所有属性
  3. /// </summary>
  4. /// <param name="xmlPathNode"></param>
  5. public void RemoveAllAttribute(string xmlPathNode)
  6. {
  7. XmlNodeList xnl = objXmlDoc.SelectNodes(xmlPathNode);
  8. foreach (XmlNode xn in xnl)
  9. {
  10. xn.Attributes.RemoveAll();
  11. }
  12. }
  13. public void DeleteNode(string Node)
  14. {
  15. //刪除一个节点。
  16. try
  17. {
  18. string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
  19. objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
  20. }
  21. catch
  22. {
  23. //throw;
  24. return;
  25. }
  26. }
  27. public void InsertNodeWithChild(string mainNode, string ChildNode, string Element, string Content)
  28. {
  29. //插入一节点和此节点的一子节点。
  30. XmlNode objRootNode = objXmlDoc.SelectSingleNode(mainNode);
  31. XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
  32. objRootNode.AppendChild(objChildNode);//插入节点
  33. XmlElement objElement = objXmlDoc.CreateElement(Element);
  34. objElement.InnerText = Content;
  35. objChildNode.AppendChild(objElement);//插入子节点
  36. }
  37. /// <summary>
  38. /// 插入一个节点,带一个Attribute和innerText
  39. /// </summary>
  40. /// <param name="mainNode"></param>
  41. /// <param name="Element">节点名称</param>
  42. /// <param name="Attrib">Attribute名称</param>
  43. /// <param name="AttribContent">Attribute值</param>
  44. /// <param name="Content">innerText值</param>
  45. public void InsertNode(string mainNode, string Element, string Attrib, string AttribContent, string Content)
  46. {
  47. XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
  48. XmlElement objElement = objXmlDoc.CreateElement(Element);
  49. objElement.SetAttribute(Attrib, AttribContent);
  50. objElement.InnerText = Content;
  51. objNode.AppendChild(objElement);
  52. }
  53. /// <summary>
  54. /// 插入一个节点,带一个Attribute
  55. /// </summary>
  56. /// <param name="mainNode"></param>
  57. /// <param name="Element">节点名称</param>
  58. /// <param name="Attrib">Attribute名称</param>
  59. /// <param name="AttribContent">Attribute值</param>
  60. public void InsertNode(string mainNode, string Element, string Attrib, string AttribContent)
  61. {
  62. XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
  63. XmlElement objElement = objXmlDoc.CreateElement(Element);
  64. objElement.SetAttribute(Attrib, AttribContent);
  65. objNode.AppendChild(objElement);
  66. }
  67. /// <summary>
  68. /// 插入一个节点
  69. /// </summary>
  70. /// <param name="mainNode"></param>
  71. /// <param name="Element">节点名称</param>
  72. public void InsertNode(string mainNode, string Element)
  73. {
  74. XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
  75. XmlElement objElement = objXmlDoc.CreateElement(Element);
  76. objNode.AppendChild(objElement);
  77. }
  78. //<summary>
  79. //插入一个节点,带多个属性和一个inner text
  80. //</summary>
  81. public void InsertNode(string mainNode, string elementName, string[] arrAttributeName, string[] arrAttributeContent, string elementContent)
  82. {
  83. try
  84. {
  85. XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
  86. XmlElement objElement = objXmlDoc.CreateElement(elementName);
  87. for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
  88. {
  89. objElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
  90. }
  91. objElement.InnerText = elementContent;
  92. objNode.AppendChild(objElement);
  93. }
  94. catch
  95. {
  96. throw;
  97. //string t = mainNode;
  98. }
  99. }
  100. ///<summary>
  101. ///插入一个节点,带多个属性
  102. ///</summary>
  103. public void InsertNode(string mainNode, string elementName, string[] arrAttributeName, string[] arrAttributeContent)
  104. {
  105. try
  106. {
  107. XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
  108. XmlElement objElement = objXmlDoc.CreateElement(elementName);
  109. for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
  110. {
  111. objElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
  112. }
  113. //objElement.InnerText = elementContent;
  114. objNode.AppendChild(objElement);
  115. }
  116. catch
  117. {
  118. throw;
  119. //string t = mainNode;
  120. }
  121. }
  122. /// <summary>
  123. /// 插入子节点(带多个属性)
  124. /// </summary>
  125. /// <param name="parentNode">要插入的父节点</param>
  126. /// <param name="elementName">插入的节点名称</param>
  127. /// <param name="arrAttributeName">属性名称[数组]</param>
  128. /// <param name="arrAttributeContent">属性内容[数组]</param>
  129. /// <param name="elementContent">节点内容</param>
  130. public void AddChildNode(string parentNodePath, string elementName, string[] arrAttributeName, string[] arrAttributeContent, string elementContent)
  131. {
  132. try
  133. {
  134. XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
  135. XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
  136. for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
  137. {
  138. objChildElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
  139. }
  140. objChildElement.InnerText = elementContent;
  141. parentNode.AppendChild(objChildElement);
  142. }
  143. catch
  144. {
  145. return;
  146. }
  147. }
  148. /// <summary>
  149. /// 插入子节点(将内容以CData形式写入)
  150. /// </summary>
  151. /// <param name="parentNode">要插入的父节点</param>
  152. /// <param name="elementName">插入的节点名称</param>
  153. /// <param name="elementContent">节点内容</param>
  154. public void AddChildNodeCData(string parentNodePath, string elementName, string elementContent)
  155. {
  156. try
  157. {
  158. XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
  159. XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
  160. //写入cData数据
  161. XmlCDataSection xcds = objXmlDoc.CreateCDataSection(elementContent);
  162. objChildElement.AppendChild(xcds);
  163. parentNode.AppendChild(objChildElement);
  164. }
  165. catch
  166. {
  167. return;
  168. }
  169. }
  170. /// <summary>
  171. /// 插入子节点(仅内容,不带属性)
  172. /// </summary>
  173. /// <param name="parentNode">要插入的父节点</param>
  174. /// <param name="elementName">插入的节点名称</param>
  175. /// <param name="elementContent">节点内容</param>
  176. public void AddChildNode(string parentNodePath, string elementName, string elementContent)
  177. {
  178. try
  179. {
  180. XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
  181. XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
  182. objChildElement.InnerText = elementContent;
  183. parentNode.AppendChild(objChildElement);
  184. }
  185. catch
  186. {
  187. return;
  188. }
  189. }
  190. /// <summary>
  191. /// 根据xpath值查找节点
  192. /// </summary>
  193. /// <param name="NodePath">要查找节点的xpath值</param>
  194. /// <returns>找到返回true,否则返回true</returns>
  195. public bool FindNode(string NodePath)
  196. {
  197. try
  198. {
  199. if (objXmlDoc.SelectSingleNode(NodePath) != null)
  200. {
  201. return true;
  202. }
  203. else
  204. {
  205. return false;
  206. }
  207. }
  208. catch
  209. {
  210. return false;
  211. }
  212. }

XML操作:1.XML类(http://blog.csdn.net/happy09li/article/details/7460521)的更多相关文章

  1. golang操作memcached 转自https://blog.csdn.net/weixin_37696997/article/details/78760397

    go使用memcached需要第三方的驱动库,这里有一个库是memcached作者亲自实现的,代码质量效率肯定会有保障 1:安装 go get github.com/bradfitz/gomemcac ...

  2. maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371

    使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371  使用"mvn clean"命令清除编 ...

  3. 集合各个实现类的底层实现原理 ----- 原文地址:https://blog.csdn.net/qq_25868207/article/details/55259978

    ArrayList实现原理要点概括 参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/ ...

  4. JSON.parseObject将json字符串转换为bean类,是否大小写敏感区分---https://blog.csdn.net/mathlpz126/article/details/80684034

    JSON.parseObject将json字符串转换为bean类,是否大小写敏感区分 https://blog.csdn.net/mathlpz126/article/details/80684034

  5. UML类图几种关系的总结(转载 http://blog.csdn.net/tianhai110/article/details/6339565 )

    http://blog.csdn.net/tianhai110/article/details/6339565

  6. Java类和对象 详解(一)---写的很好通俗易懂---https://blog.csdn.net/wei_zhi/article/details/52745268

    https://blog.csdn.net/wei_zhi/article/details/52745268

  7. RedHat如何关闭防火墙 : http://blog.csdn.net/chongxin1/article/details/76072758

    版本号:RedHat6.5   JDK1.8   Hadoop2.7.3 hadoop  说明:从版本2开始加入了Yarn这个资源管理器,Yarn并不需要单独安装.只要在机器上安装了JDK就可以直接安 ...

  8. mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204

    前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybati ...

  9. http://blog.csdn.net/LANGXINLEN/article/details/50421988

    GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时候,无意中发现了 @Trinea在GitHub上的一个项目 Android开源项目分类汇总, 由于类容太多了,我没有一个个完整地 ...

随机推荐

  1. Sass结合Modernizr的使用方法

    Modernizr在初始化的时候会首先找寻class=“no-js”的元素: <!DOCTYPE html> <html class="no-js"> &l ...

  2. LA 3641 (置换 循环的分解) Leonardo's Notebook

    给出一个26个大写字母的置换B,是否存在A2 = B 每个置换可以看做若干个循环的乘积.我们可以把这些循环看成中UVa 10294的项链, 循环中的数就相当于项链中的珠子. A2就相当于将项链旋转了两 ...

  3. 如何在Android应用中加入广告

    转载自:http://mobile.51cto.com/aprogram-387527.htm 目前我自己的一款小程序中正进行到加入广告阶段,BAIDU了一下,找到如下好文章,非常有必要共享一下,故转 ...

  4. AngularJS 拦截器和应用例子(转)

    $httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信.在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作.还有一些情况是,我们 ...

  5. python - os.path,路径相关操作

    python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...

  6. Java [Leetcode 268]Missing Number

    题目描述: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is ...

  7. (转)Linux: su sudo sudoer

    http://zebralinux.blog.51cto.com/8627088/1369301 日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root.当需要 ...

  8. (转)TCP协议那些事

    (上) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是 ...

  9. Nginx源码安装及调优配置

    导读 由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置. Nginx编译前的优 ...

  10. 《C++ primer》--第7章

    删除指针后,该指针就变成了悬垂指针.悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了. 习题7.8 举一个例子说明什么时候应该将形参定义为引用类型.再举一个例子说明什么时候不应该将形参定义为引用 ...