C#工具类之XmlNode扩展类
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扩展类的更多相关文章
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- C#工具类之素数扩展类
/// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...
- C#工具类之字符串扩展类
/// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summa ...
- C#工具类之字典扩展类
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- C#工具类之日期扩展类
/// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...
- c#工具类之Int扩展类
public static class IntHelper { /// <summary> /// 转换为2进制字符串 /// </summary> /// <param ...
- ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)
BOBUtils 工具大全 本人github开源和收集功能地址:https://github.com/niexiaobo [对ios新手或者工作一年以内开发人员很有用处] 常用方法等收集.添加扩展类. ...
- DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集
复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...
- 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)
参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...
随机推荐
- 利用AdaBoost方法构建多个弱分类器进行分类
1.AdaBoost 思想 补充:这里的若分类器之间有比较强的依赖关系;对于若依赖关系的分类器一般使用Bagging的方法 弱分类器是指分类效果要比随机猜测效果略好的分类器,我们可以通过构建多个弱分类 ...
- MYSQL优化——索引覆盖
索引覆盖:如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要进行到磁盘中找数据,若果查询得列不是索引的一部分则要到磁盘中找数据. 建表: create table test_ind ...
- Office Web APP预览如何去掉顶部版权标志“Microsoft Office Web Apps”
在Office Web APP的预览会涉及4中类型的文 件:Word.Excel.PowerPoint.PDF,不同的类型在预览时调用的文件是不一样的,其中Word和 PDF调用的是同一个文件.每个预 ...
- 进程间传递文件描述符fd
众所周知,子进程会继承父进程已经打开的文件描述符fd,但是fork之后的是不会被继承的,这个时候是否无能无力了?答应是NO.Linux提供了一个系统调用sendmsg,借助它,可以实现进程间传递文件描 ...
- jqGrid查询案例(实用)
var ThisTime = getNowFormatDate(); //加载表格 function GetGrid() { var selectedRowIndex = 0; var $gridTa ...
- Build fat static library (device + simulator) using Xcode and SDK 4+
155down votefavorite 185 It appears that we can - theoretically - build a single static library that ...
- 很棒的bootstrap学习网站
http://www.w3cschool.cc/bootstrap/bootstrap-tutorial.html
- XE StringGrid应用(G1属性触发G2)
unit UnitMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System. ...
- 21天学通C++学习笔记(四):数组和字符串
1. 数组 概念 是一组元素 这些元素是相同的数据类型 按顺序存储到内存中 目的是避免在业务需要时去重复声明很多同类型的变量 初始化 分别初始化:int i [5] = {1,2,3,4,5}; 全部 ...
- 老程序员解Bug的通用套路
千万不要当程序员面说有bug 对于新手程序员而言,在复杂代码中找BUG是一个难点.下面我们总结下老从程序员解Bug的通用套路,希望对大家有帮助. 1.IDE调试 根据项目特点和语言特点选择一个最合适的 ...