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. 算法Sedgewick第四版-第3章Searching-搜索总结

  2. Django--model模型绑定_数据库操作

    1.创建model类 app01/models.py 1 2 3 4 5 6 7 from django.db import models   # Create your models here. c ...

  3. Shiro——认证概述

    认证流程 身份认证流程 首先调用 Subject.login(token) 进行登录,其会自动委托给SecurityManager SecurityManager 负责真正的身份验证逻辑:它会委托给A ...

  4. Linux、Windows中的相对路径和绝对路径

    获取系统的分隔符的方式:System.getProperty("file.separator")   Windows为 \   Linux为/ Windows绝对路径: 以盘符开始 ...

  5. 在VS2008和VS2010中禁用Visual Assist X

    此方法对于VS2008和VS2010 都适用. 在VS2008或VS2010菜单栏中选择“VassistX”选项卡,找到“Enable/Disable Visual Assist X”选项, 点击即可 ...

  6. YDNJS(上卷):this 的绑定对象

    函数中的 this 是在调用时被绑定的,this 指向谁完全取决于函数的调用位置. 确定 this 的绑定对象的方式有 4 种. 默认绑定 默认绑定就是将函数中的 this 绑定给了全局对象 wind ...

  7. LightOJ 1065 Island of Survival (概率DP?)

    题意:有 t 只老虎,d只鹿,还有一个人,每天都要有两个生物碰面,1.老虎和老虎碰面,两只老虎就会同归于尽 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方 3.人和鹿碰面,人可以选择杀或者不杀该鹿4. ...

  8. Debian7安装后的配置(英文环境chromium浏览器中汉字变成方块的问题)

    原文来自:http://www.programgo.com/article/3272573017/ 1.安装文泉宋体 sudo aptitude install xfonts-wqy sudo apt ...

  9. MongoDB整理笔记のCapped Collection

    1.简单介绍 capped collections 是性能出色的有着固定大小的集合,以LRU(Least Recently Used 最近最少使用)规则和插入顺序进行age-out(老化移出)处理,自 ...

  10. C# static 字段初始值设定项无法引用非静态字段、方法或属性

    问题:字段或属性的问题字段初始值设定项无法引用非静态字段.方法 下面代码出错的原因,在类中定义的字段为什么不能用? public string text = test(); //提示 字段或属性的问题 ...