using System;
using System.Linq;
using System.Xml; /// <summary>
/// XmlNodeHelper
/// </summary>
public static class XmlNodeHelper
{
/// <summary>
/// 获取给定XmlNode所在的Document
/// </summary>
/// <param name="parentNode">给定XmlNode</param>
/// <returns>XmlDocument</returns>
public static XmlDocument GetDocument(this XmlNode parentNode)
{
if (parentNode == null)
{
throw new Exception("XmlNode不能为空");
} var document = (parentNode as XmlDocument) ?? parentNode.OwnerDocument;
if (document == null)
{
throw new Exception("XmlDocument不能为空");
} return document;
} /// <summary>
/// 为给定结点创建子结点
/// </summary>
/// <param name="parentNode">给定结点</param>
/// <param name="name">子结点名称</param>
/// <returns>子结点</returns>
public static XmlNode CreateChildNode(this XmlNode parentNode, string name)
{
var document = parentNode.GetDocument();
var node = document.CreateElement(name);
parentNode.AppendChild(node); return node;
} /// <summary>
/// 为给定结点创建子结点
/// </summary>
/// <param name="parentNode">给定结点</param>
/// <param name="name">子结点名称</param>
/// <param name="namespaceUri">子结点命名空间</param>
/// <returns>子结点</returns>
public static XmlNode CreateChildNode(this XmlNode parentNode, string name, string namespaceUri)
{
var document = parentNode.GetDocument();
var node = document.CreateElement(name, namespaceUri);
parentNode.AppendChild(node); return node;
} /// <summary>
/// 根据属性名称获取给定结点的属性值
/// </summary>
/// <param name="node">给定结点</param>
/// <param name="attributeName">属性名称</param>
/// <returns>属性值</returns>
public static string GetAttribute(this XmlNode node, string attributeName)
{
return node.GetAttribute(attributeName, null);
} /// <summary>
/// 根据属性名称获取给定结点的属性值
/// </summary>
/// <param name="node">给定结点</param>
/// <param name="attributeName">属性名称</param>
/// <param name="defaultValue">默认值</param>
/// <returns>属性值</returns>
public static string GetAttribute(this XmlNode node, string attributeName, string defaultValue)
{
if (node.Attributes == null)
{
return null;
} var attribute = node.Attributes[attributeName]; return (attribute != null ? attribute.InnerText : defaultValue);
} /// <summary>
/// 为给定结点设置属性名称与值(如果不存在属性名称,则新增;否则更改)
/// </summary>
/// <param name="node">给定结点</param>
/// <param name="name">属性名称</param>
/// <param name="value">属性值</param>
public static void SetAttribute(this XmlNode node, string name, string value)
{
if (node == null || node.Attributes == null)
{
return;
} var nodeAttributes = node.Attributes;
var attribute = nodeAttributes[name, node.NamespaceURI];
if (attribute == null)
{
var document = node.GetDocument();
attribute = document.CreateAttribute(name, document.NamespaceURI);
nodeAttributes.Append(attribute);
} attribute.InnerText = value;
}
}

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. 重置CentOS6.5的登录口令

    早先在虚拟机Vmware里安装了一台CentOS6.5,现在想登录,发现无论怎么输入登录口令都不正确,以至于无法登录. 查阅网上资料,可用下面步骤里的方法重置登录口令,在此记录. 1.启动机器,出现下 ...

  2. DataTable 设置primarykey 后进行 Merge操作

    1.先查看概念 可以看highplayer博客 http://blog.csdn.net/highplayer/article/details/6613817 2. protected void st ...

  3. Shiro——MD5加密

    一.shiro默认密码的比对 通过 AuthenticatingRealm 的 credentialsMatcher 属性来进行的密码的比对 /**源码org.apache.shiro.realm.A ...

  4. CodeBlocks调试功能(转)

    转自:迂者-贺利坚 http://blog.csdn.net/sxhelijian/article/details/15026159 示例代码: #include <iostream> u ...

  5. atom markdown报错:AssertionError: html-pdf: Failed to load PhantomJS module.

    今天安装markdown-pdf之后运行的时候报错: AssertionError: html-pdf: Failed to load PhantomJS module. You have to se ...

  6. URAL 1748. The Most Complex Number(反素数)

    题目链接 题意 :给你一个n,让你找出小于等于n的数中因子个数最多的那个数,并且输出因子个数,如果有多个答案,输出数最小的那个 思路 : 官方题解 : (1)此题最容易想到的是穷举,但是肯定超时. ( ...

  7. linux版本信息以及x86与x86_64的区别

    一 x86.x86_64.AMD64 x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种 ...

  8. 认识学习MVC这家伙

    通过最近的学习认识,只能感慨这玩意太强大了! 以前看了一些MVC的入门教程,看入门教程我感觉不能去体会它的强大,可以看看它的扩展点,通过扩展点去真正的试着了解它,体会它的强大. 它的验证.模型绑定提供 ...

  9. 十三、Node.js-fs模块(上)

    Node.js内置的fs模块就是文件系统模块,负责读写文件以及对文件进行相关操作. 下面直接可参考下面的代码进行fs模块里面基本方法的学习: /** * Created by Administrato ...

  10. 黑色主题-darkgreentrip

    /* 整个页面 */ home,#main { margin:0px 0px 0px 0px; background:rgb(9, 9, 9, 0.9); } /* 头部高度 */ header { ...