用XmlDocument的处理XML文件

/// <summary>
/// 封装XmlDocument的处理
/// </summary>
public static class XmlHelper
{
///<summary>
/// 获得node下node指定的子节点实体
/// </summary>
/// <param name="node">节点</param>
/// <param name="nodeName">node下子节点名称,多个时用/隔开</param>
/// <returns>node下nodeName指定的子节点实体,若null没找到,否则返回第一个匹配的</returns>
public static XmlNode GetNode(XmlNode node, string nodeName)
{
if (node == null || String.IsNullOrEmpty(nodeName))
{
return null;
}
else
{
string nodePath = "/" + node.Name;
if (nodeName.StartsWith("/"))
{
nodePath += nodeName;
}
else
{
nodePath += "/" + nodeName;
}
return node.SelectSingleNode(nodePath);
}
}
///<summary>
/// 获得node下node指定的子节点的集合
/// </summary>
/// <param name="node">节点</param>
/// <param name="nodeName">node下子节点名称,多个时用/隔开</param>
/// <returns>node下nodeName指定的子节点的集合,若null没找到</returns>
public static XmlNodeList GetNodes(XmlNode node, string nodeName)
{
if (node == null || String.IsNullOrEmpty(nodeName))
{
return null;
}
else
{
string nodePath = "/" + node.Name;
if (nodeName.StartsWith("/"))
{
nodePath += nodeName;
}
else
{
nodePath += "/" + nodeName;
}
return node.SelectNodes(nodePath);
}
}

/// <summary>
/// 给指定的属性赋值
/// </summary>
/// <param name="node">节点实体 空不能赋值</param>
/// <param name="name">属性值 属性值为空不能赋值</param>
/// <param name="value">值对象 空或ToString()==""则不赋值 去除特殊字符</param>
public static void SetAttribute(XmlNode node, string name, object value)
{
if (node != null && !String.IsNullOrEmpty(name)
&& value != null && !Convert.IsDBNull(value))
{
string v = "";
if (value is DateTime)
{
v = Convert.ToDateTime(value).ToString(Constants.DATE_FORMART);
}
else
{
v = GetAttributeValue(value.ToString().Trim());
}
if (v != "")
{
XmlAttribute att = node.Attributes[name];
if (att == null)
{
att = node.OwnerDocument.CreateAttribute(name);
att.Value = v;
node.Attributes.Append(att);
}
else
{
node.Attributes[name].Value = v;
}
}
}
}
/// <summary>
/// 给指定的节点的最后一个子节点的属性赋值
/// </summary>
/// <param name="node">节点实体 空不能赋值</param>
/// <param name="nodeName">node下子节点名称,多个时用/隔开</param>
/// <param name="name">属性值 属性值为空不能赋值</param>
/// <param name="value">值对象 空或ToString()==""则不赋值 去除特殊字符</param>
public static void SetAttribute(XmlNode node, string nodeName, string name, object value)
{
if (node != null && !String.IsNullOrEmpty(name)
&& value != null)
{
if (!String.IsNullOrEmpty(nodeName))
{
node = GetNode(node, nodeName);
}
if (node != null)
{
SetAttribute(node, name, value);
}
}
}
/// <summary>
/// 给指定的节点的最后一个子节点的属性赋值
/// </summary>
/// <param name="node">节点实体 空不能赋值</param>
/// <param name="nodeName">node下子节点名称,多个时用/隔开</param>
/// <param name="nvc">属性及值集合</param>
public static void SetAttribute(XmlNode node, string nodeName, NameValueCollection nvc)
{
if (node != null && nvc != null)
{
if (!String.IsNullOrEmpty(nodeName))
{
node = GetNode(node, nodeName);
}
if (node != null)
{
for (int i = 0; i < nvc.Count; i++)
{
SetAttribute(node, nvc.GetKey(i), nvc[i]);
}
}
}
}
/// <summary>
/// 去除属性值中不符合xml要求的字符
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private static string GetAttributeValue(string value)
{
if (value == "")
{
return "";
}
else
{
return value.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("/"", "&quot;").Replace("%", "");
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值