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. bzoj1297: [SCOI2009]迷路

    矩阵. 一个图的邻接矩阵的m次幂相当于 长度恰好为m的路径数.这要求边权为1. 因为边权小于等于9,所以可以把一个点拆成9的点. 拆成的第(i+1)个点向第i个点连边. 如果存在边(u,v,w) 就由 ...

  2. UVa 10652 (简单凸包) Board Wrapping

    题意: 有n块互不重叠的矩形木板,用尽量小的凸多边形将它们包起来,并输出并输出木板总面积占凸多边形面积的百分比. 分析: 几乎是凸包和多边形面积的裸题. 注意:最后输出的百分号前面有个空格,第一次交P ...

  3. 原创:js代码, 让dedecms支持Tag选择, 添加内容更为方便,不用手输Tag

    dedecms在编辑修改内容时,TAG标签需要手动输,中文的Tag, 中间还得用半角字符','分隔,  输入法切来切去很不方便,   于是动手改后台代码, 利用后台的tags_main.php, 让d ...

  4. php复制目录及文件

    <?php /* 复制目录 */ function copydir($dirsrc,$dirto){ if(is_file($dirto)){ echo "目标不是目录不能创建&quo ...

  5. 聚焦 SQL 数据库活动异地复制

    Tobias Ternstrom  US-DS-PM 首席部门项目经理 本文作为一系列业务连续性和灾难恢复文章的开篇,概述了业务连续性的各种场景,然后重点介绍 SQL 数据库高级服务级别提供的活动异地 ...

  6. 【转】Windows环境下Android Studio v1.0安装教程

    原文网址:http://ask.android-studio.org/?/article/9 http://android-studio.org/index.php/docs/experience/1 ...

  7. C# 类与接口的几个问题的总结(待续)

    1. 有关类的多态性 C#中,类的多态性是通过在子类中重载基类的虚方法(virtual标识)或函数成员来实现. 在C#中,继承.虚方法和重写方法组合在一起才能实现多态性. 2. 显式接口成员的使用 显 ...

  8. 【九度OJ】题目1009-二叉搜索树

    题目 思路 构建二叉搜索树,并保存先序遍历和中序遍历的序列在samplePreOrder,sampleInOrder 每遇到一个新的序列,构建一棵二叉搜索树,保存先序遍历和中序遍历的序列testPre ...

  9. CodeForce---Educational Codeforces Round 3 Load Balancing 正题

    看到这题是我的想法就是肯定跟平均值有关但是接下来就不知道怎么做了 看完大神的正解数之后,原来发现是这么简单,但是就是不知道为啥一定是平均值和平均值加1,而不是平均值和平均值减1: 好啦下面就贴出大神的 ...

  10. C#相关图书推荐

    C#入门经典(第6版) 作      者 [美] Karli Watson,Jacob Vibe Hammer,Jon D Reid 等 著: 出 版 社 清华大学出版社 出版时间 2014-01-0 ...