1. using System;
  2. using System.Linq;
  3. using System.Xml;
  4.  
  5. /// <summary>
  6. /// XmlNodeHelper
  7. /// </summary>
  8. public static class XmlNodeHelper
  9. {
  10. /// <summary>
  11. /// 获取给定XmlNode所在的Document
  12. /// </summary>
  13. /// <param name="parentNode">给定XmlNode</param>
  14. /// <returns>XmlDocument</returns>
  15. public static XmlDocument GetDocument(this XmlNode parentNode)
  16. {
  17. if (parentNode == null)
  18. {
  19. throw new Exception("XmlNode不能为空");
  20. }
  21.  
  22. var document = (parentNode as XmlDocument) ?? parentNode.OwnerDocument;
  23. if (document == null)
  24. {
  25. throw new Exception("XmlDocument不能为空");
  26. }
  27.  
  28. return document;
  29. }
  30.  
  31. /// <summary>
  32. /// 为给定结点创建子结点
  33. /// </summary>
  34. /// <param name="parentNode">给定结点</param>
  35. /// <param name="name">子结点名称</param>
  36. /// <returns>子结点</returns>
  37. public static XmlNode CreateChildNode(this XmlNode parentNode, string name)
  38. {
  39. var document = parentNode.GetDocument();
  40. var node = document.CreateElement(name);
  41. parentNode.AppendChild(node);
  42.  
  43. return node;
  44. }
  45.  
  46. /// <summary>
  47. /// 为给定结点创建子结点
  48. /// </summary>
  49. /// <param name="parentNode">给定结点</param>
  50. /// <param name="name">子结点名称</param>
  51. /// <param name="namespaceUri">子结点命名空间</param>
  52. /// <returns>子结点</returns>
  53. public static XmlNode CreateChildNode(this XmlNode parentNode, string name, string namespaceUri)
  54. {
  55. var document = parentNode.GetDocument();
  56. var node = document.CreateElement(name, namespaceUri);
  57. parentNode.AppendChild(node);
  58.  
  59. return node;
  60. }
  61.  
  62. /// <summary>
  63. /// 根据属性名称获取给定结点的属性值
  64. /// </summary>
  65. /// <param name="node">给定结点</param>
  66. /// <param name="attributeName">属性名称</param>
  67. /// <returns>属性值</returns>
  68. public static string GetAttribute(this XmlNode node, string attributeName)
  69. {
  70. return node.GetAttribute(attributeName, null);
  71. }
  72.  
  73. /// <summary>
  74. /// 根据属性名称获取给定结点的属性值
  75. /// </summary>
  76. /// <param name="node">给定结点</param>
  77. /// <param name="attributeName">属性名称</param>
  78. /// <param name="defaultValue">默认值</param>
  79. /// <returns>属性值</returns>
  80. public static string GetAttribute(this XmlNode node, string attributeName, string defaultValue)
  81. {
  82. if (node.Attributes == null)
  83. {
  84. return null;
  85. }
  86.  
  87. var attribute = node.Attributes[attributeName];
  88.  
  89. return (attribute != null ? attribute.InnerText : defaultValue);
  90. }
  91.  
  92. /// <summary>
  93. /// 为给定结点设置属性名称与值(如果不存在属性名称,则新增;否则更改)
  94. /// </summary>
  95. /// <param name="node">给定结点</param>
  96. /// <param name="name">属性名称</param>
  97. /// <param name="value">属性值</param>
  98. public static void SetAttribute(this XmlNode node, string name, string value)
  99. {
  100. if (node == null || node.Attributes == null)
  101. {
  102. return;
  103. }
  104.  
  105. var nodeAttributes = node.Attributes;
  106. var attribute = nodeAttributes[name, node.NamespaceURI];
  107. if (attribute == null)
  108. {
  109. var document = node.GetDocument();
  110. attribute = document.CreateAttribute(name, document.NamespaceURI);
  111. nodeAttributes.Append(attribute);
  112. }
  113.  
  114. attribute.InnerText = value;
  115. }
  116. }

C#工具类之XmlNode扩展类的更多相关文章

  1. [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]

    [Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...

  2. C#工具类之素数扩展类

    /// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...

  3. C#工具类之字符串扩展类

    /// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summa ...

  4. C#工具类之字典扩展类

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  5. C#工具类之日期扩展类

    /// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...

  6. c#工具类之Int扩展类

    public static class IntHelper { /// <summary> /// 转换为2进制字符串 /// </summary> /// <param ...

  7. ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)

    BOBUtils 工具大全 本人github开源和收集功能地址:https://github.com/niexiaobo [对ios新手或者工作一年以内开发人员很有用处] 常用方法等收集.添加扩展类. ...

  8. DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集

    复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...

  9. 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)

    参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...

随机推荐

  1. java中的监听事件

    java监听器实现的类 1.ServletContextListener:对servlet上下文的创建和销毁监听 2.ServletContextAttributeListener:监听servlet ...

  2. linux(2)

  3. 十四课 slam&gmapping

    gmapping 根据激光数据(或者深度数据模拟的激光数据)建立地图,在turtlebot里面应用的就是深度数据模拟的激光数据.如果没有激光雷达的话可以使用Kinect. SLAM 机器人在未知环境中 ...

  4. SQL语句学习积累·数据的操作

    数据的操作 select 取表中前五条数据 select top 5 from table_name 取表中前50%的数据 select top 50 percent from table_name ...

  5. DataAnnotationsModelValidator-基于数据注解方式的model验证器

    http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html http://www.cnblogs.com/artech/ar ...

  6. 三分题两道:lightoj1146 Closest Distance、lightoj1240 Point Segment Distance (3D)

    lightoj1146 Two men are moving concurrently, one man is moving from A to B and other man is moving f ...

  7. HTML5移动开发即学即用(双色) 王志刚 pdf扫描版​

    HTML5已经广泛应用于各智能移动终端设备上,而且绝大部分技术已经被各种最新版本的测览器所支持:逐一剖析HTML5标准中包含的最新技术,详细介绍了HTML5新标准中提供的各种API,各种各样的应用实例 ...

  8. C#静态类 静态方法与非静态方法比较

    静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...

  9. XXX培训机构Python自动化教程目录

  10. MVC进阶篇(一)——概览

    前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...