/// <summary>
/// 批量修改节点值
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="parameters">节点,值</param>
/// <param name="nameSpace">命名空间</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.BatchUpdateNodeValue(path, parameters, nameSpace)
      * 旺财软件 WangCaiSoft
************************************************/
public static void BatchUpdateNodeValue(string filePath, List<KeyValuePair<string, string>> parameters, string nameSpace = "")
{
if (!string.IsNullOrEmpty(filePath))
{
if (!filePath.Contains(@":\") && filePath.Contains(@"/"))
{
filePath = System.Web.HttpContext.Current.Server.MapPath(filePath);
}
try
{
var doc = new XmlDocument();
doc.Load(filePath);
if (parameters != null && parameters.Count > 0)
{
foreach (var parameter in parameters)
{
if (parameter.Key != null && parameter.Value != null)
{
var node = parameter.Key;
var value = parameter.Value;
var xn = doc.SelectSingleNode(node);
if (!string.IsNullOrEmpty(nameSpace))
{
XmlNamespaceManager xmlnam = new XmlNamespaceManager(doc.NameTable);
xmlnam.AddNamespace("a", nameSpace);
node = node.Replace("/", "/a:");
xn = doc.SelectSingleNode(node, xmlnam);
}
var xe = (XmlElement)xn;
if (xe != null)
{
xe.InnerText = value;
}
}
}
}
//最后一次性保存
doc.Save(filePath);
}
catch (Exception ex)
{
LogUtil.WriteException(ex);
}
}
}

调用方法

                    var parameters = new List<KeyValuePair<string, string>>();
parameters.Add(new KeyValuePair<string, string>("/DocumentID/ID", orderNumber));
parameters.Add(new KeyValuePair<string, string>("/Status/Code", "Processed"));
parameters.Add(new KeyValuePair<string, string>("/CreditCardAuthCode", transactionKey));
parameters.Add(new KeyValuePair<string, string>("/AuthorizedBy", userName));
parameters.Add(new KeyValuePair<string, string>("/AuthorizedDate", transactionDate)); XmlHelper.BatchUpdateNodeValue(filePath, parameters, "http://schema.infor.com/InforOAGIS/2");

  

批量更新带有命名空间的XML文件的多个节点值的更多相关文章

  1. 带有命名空间的xml解析,C#

    前一段时间做花旗的接口,返回的xml格式是带有命名空间的,可是难倒了我,找了好久才找到解决办法,给大家分享下,少走弯路. 1,直接进入正题,先看一段带有命名空间的xml,这段xml大概的意思是,前面是 ...

  2. opencv局限:cv::FileStorage读取中,xml文件的第一层节点不能超过4个

    今天测试发现一个问题,cv::FileStorage读取中,xml文件的第一层节点不能超过4个. <?xml version="1.0"?> <opencv_st ...

  3. php解析带有命名空间的xml

    xml如果带有命名空间我们将如何解析,例如: <ns1:CreateBillResponse xmlns:ns1="http://neusoft.com" xmlns:xsd ...

  4. 利用XPath解析带有xmlns的XML文件

    在.net中,编写读取xml 的程序中提示"未将对象引用设置到对象的实例",当时一看觉得有点奇怪.为什么在读取xml数据的时候也要实例化一个对象.google了才知道,xml文件中 ...

  5. 解决创建带有NameSpace的XML文件出现空白xmlns的问题

    为了能够让用户自行部署ClickOnce应用程序,需要编写一个生成ClickOnce应用程序的ClickOnce专用安装程序setup.exe,而生成这个setup.exe的方法就是编写一个XML格式 ...

  6. Android attrs.xml文件中属性类型format值的格式

    "reference" //引用 "color" //颜色 "boolean" //布尔值 "dimension" // ...

  7. python中用ElementTree.iterparse()读取xml文件中的多层节点

    我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 ...

  8. 解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架自动封装参数的功能

    程序结构:src文件夹下存放xml文件 该文件内容: <?xml version="1.0" encoding="UTF-8"?> <myst ...

  9. C#操作XML,如何获取指定节点值?

    博客园提问,结合网友回答http://q.cnblogs.com/q/36082/   打开是treelist树形显示xml所有节点,递归来实现 xmlDoc = new XmlDocument(); ...

随机推荐

  1. Redis 键值数据类型及基本操作

    到目前为止,Redis 支持的键值数据类型如下: 字符串(String) 哈希(Map) 列表(list) 集合(sets) 有序集合(sorted sets)   1. String 字符串类型 s ...

  2. HDU 2577 How to Type (字符串处理)

    题目链接 Problem Description Pirates have finished developing the typing software. He called Cathy to te ...

  3. 空间数据库系列一:geomesa&sparksql 分析环境搭建

    geomesa sparksql 分析环境搭建 1.安装hbase-1.3.2.1 standlone版本,作为geomesa的store a.修改配置文件:hbase-1.3.2.1/conf/hb ...

  4. linux percpu机制解析【转】

    转自:http://blog.csdn.net/wh8_2011/article/details/53138377 一.概述 每cpu变量是最简单也是最重要的同步技术.每cpu变量主要是数据结构数组, ...

  5. BZOJ 4241: 历史研究——莫队 二叉堆

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4241 题意:N个int范围内的数,M次询问一个区间最大的(数字*出现次数)(加权众数),可以 ...

  6. C 封装一个通用链表 和 一个简单字符串开发库

    引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是 ...

  7. #error This file was generated by a newer version of protoc

    pattern@pattern89:/raid0/workspace/houjun/caffe-ssd$ sudo make all -j8PROTOC src/caffe/proto/caffe.p ...

  8. Makefile系列之五 :函数

    一.函数的调用语法 函数调用与变量一样,也是以“$”来标识的,其语法如下: $(<function> <arguments>) 或是 ${<function> &l ...

  9. 在Xcode中使用自定义的代码片段提高效率

    拖动代码的时候按住option键,很难拖,注意方法:< 引用于:http://www.2cto.com/kf/201409/336245.html

  10. maven使用备忘

    maven的所有功能本质上都是通过插件来实现的所有的功能.archetype插件就是根据项目类型创建项目的插件.执行archetype:generate命令就会list一系列的项目类型,可以选择一个合 ...