BizTalk 新增/修改/删除 XmlDocument 名字空间的高效方法
新增一个名字空间
- public class AddXmlNamespaceStream : XmlTranslatorStream
- {
- private String namespace_;
- private int level_ = 0; // hierarchy level
- public AddXmlNamespaceStream(Stream stream, String @namespace)
- : base(XmlReader.Create(stream))
- {
- namespace_ = @namespace;
- }
- #region XmlTranslatorStream Overrides
- protected override void TranslateStartElement(string prefix, string localName, string nsURI)
- {
- if (level_++ != 0)
- {
- base.TranslateStartElement(prefix, localName, nsURI);
- return;
- }
- if (String.IsNullOrEmpty(nsURI))
- {
- nsURI = namespace_;
- if (String.IsNullOrEmpty(prefix))
- prefix = "__bts_ns0__";
- }
- base.TranslateStartElement(prefix, localName, nsURI);
- }
- protected override void TranslateEndElement(bool full)
- {
- if (level_-- != 0)
- {
- base.TranslateEndElement(full);
- return;
- }
- base.TranslateEndElement(full);
- }
- #endregion
- }
删除名字空间
- public class XmlNamespaceRemoverStream : XmlTranslatorStream
- {
- protected override void TranslateStartElement(
- string prefix, string localName, string nsURI)
- {
- base.TranslateStartElement(null, localName, null);
- }
- protected override void TranslateAttribute()
- {
- if (this.m_reader.Prefix != "xmlns")
- base.TranslateAttribute();
- }
- public XmlNamespaceRemoverStream(Stream input)
- : base(new XmlTextReader(input), Encoding.Default)
- { }
- }
修改根节点 名字空间
- public class XmlNamespaceModifierStream : XmlTranslatorStream
- {
- private const string CIN_DOCTYPE = "catalogueItemNotification";
- private const string CPN_DOCTYPE = "priceSynchronisationDocument";
- private const string ROOT_GS1_ELEMENT = "StandardBusinessDocument";
- private const string NS_PREFIX = "http://www.test.com";
- private string _newNamespaceVersion;
- private string _documentType;
- protected override void TranslateStartElement(string prefix, string localName, string nsURI)
- {
- string newNSUri = string.Empty;
- bool isElementFoundWithNamespace = false;
- bool isFirstElement = false;
- if (!string.IsNullOrEmpty(prefix) && !isFirstElement)
- {
- //element found with prefix. Modify namespace with new value and append passed namespace version
- newNSUri = NS_PREFIX + _newNamespaceVersion;
- isElementFoundWithNamespace = true;
- if (localName.Equals(ROOT_GS1_ELEMENT))
- isFirstElement = true;
- }
- if (isElementFoundWithNamespace & isFirstElement)
- {
- //replace with new namespace
- Debug.WriteLine(string.Format("[BTS.Utilities.CustomPipelines.NamespaceModifier.XmlNamespaceModifierStream]Replace namespace with {0}", nsURI + newNSUri));
- if (_documentType.Equals(CIN_DOCTYPE))
- localName = localName + "Catalogue";
- if (_documentType.Equals(CPN_DOCTYPE))
- localName = localName + "Price";
- base.TranslateStartElement(null, localName, newNSUri);
- //base.TranslateStartElement(prefix, localName, newNSUri);
- }
- else
- {
- base.TranslateStartElement(null, localName, null);
- //base.TranslateStartElement(prefix, localName, newNSUri);
- }
- }
- protected override void TranslateAttribute()
- {
- if (this.m_reader.Prefix != "xmlns" && this.m_reader.Name != "xmlns")
- base.TranslateAttribute();
- }
- public XmlNamespaceModifierStream(Stream input, string namespaceVersion, string documentType)
- : base(new XmlTextReader(input), Encoding.Default)
- {
- Debug.WriteLine("[BTS.Utilities.CustomPipelines.NamespaceModifier.XmlNamespaceModifierStream]Entered method");
- _newNamespaceVersion = namespaceVersion.Trim();
- _documentType = documentType.Trim();
- Debug.WriteLine("[BTS.Utilities.CustomPipelines.NamespaceModifier.XmlNamespaceModifierStream]Exit method");
- }
- }
BizTalk 新增/修改/删除 XmlDocument 名字空间的高效方法的更多相关文章
- Oracle忘记用户名和密码以及管理员用户新增修改删除用户
Oracle忘记密码: 1.以管理员身份登录,打开dos窗口,输入 sqlplus / as sysdba 回车 2.查看当前用户和状态 select username, account_status ...
- MYSQL基础01(新增,修改,删除)
首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...
- Java代码操作properties文件(读取,新增/修改,删除)
项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...
- .net操作xml文件(新增.修改,删除,读取) 转
今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 1 一.简单介绍2 using System.Xm ...
- spring-data-jpa 新增 修改 删除 查询 分页
1.查询所有数据 findAll() 2.分页查询 findAll(new PageRequest(0, 2)) 3.根据id查询 findOne() 4.根据实体类属性查询: findByPro ...
- sql 新增 修改 删除 列操作
IF COL_LENGTH('SYS_Department', 'CreatedBy') IS NOT NULL --判断 SYS_Department 中是否存在 CreatedBy 字段 EXEC ...
- oracle 数据库更新 新增 修改 删除
数据增加 INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...) ; 考虑到日后代码的可维护性,一定要使用完整的语法进行数据的增加. 数据修改 UPDATE 表名 ...
- SQL中插入单引号,新增修改删除
1.插入单引号如果不转化的话,字符串插入到数据库中错误的,只要在字符串中有单引号的地方在加一个单引号即可. 例如:在数据库插入'井下设备' : insert into Static_Bel ...
- windows新增/修改/删除系统环境变量bat示例,一键配置JAVA_HOME
setx JAVA_HOME "C:\Program Files\java\jdk1.6.0_27" /m setx classpath = ".;%JAVA_HOME% ...
随机推荐
- JAVAC 命令详解
转自:http://jeffchen.iteye.com/blog/395671 结构 javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列. ...
- 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据
使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...
- RQNOJ 2 开心的金明
一道基础的01背包,要是不明白可以自己搜一下背包九讲,自己刚开始数组开小了,题目看串了行,找了半天,小错还是要格外注意的. #include <iostream> #include < ...
- squid常用操作
如何查看squid的缓存命中率 使用命令: squidclient -h host -p port mgr:info比如: /usr/local/squid/bin/squidclient -h 12 ...
- mui几种页面跳转方式对比
1.初始化时创建子页面 mui.init({ subpages: [{ url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址 id: your - su ...
- ZOJ 3229 Shoot the Bullet (有源有汇有上下界最大流)
题意:一个人要给女孩子们拍照,一共 n 天,m 个女孩子,每天他至多拍 d[i] 张照片,每个女孩子总共要被至少拍 g[i] 次.在第 i 天,可以拍 c[i] 个女孩子,c[i] 个女孩子中每个女孩 ...
- JAVA核心问题(一)反射之引言 构造函数
反射,简单来说,就是在运行时获取Class对象的所有属性和方法,无论公有私有.虽然是一个基础问题,在这里还是全面的记录一下,认真对待! 获取构造函数 构造函数大致分为两种,public和非public ...
- PHP几种加密方式
1.MD5() 2.Sha1() 3.urlencode()方法用于加密,urldecode()方法用于解密 4.base64_encode ( ) 64位加密 base64_decode ( ...
- 项目中使用同一dll的不同版本
在一个项目中,因为使用了一些插件,这些插件使用了不同版本的log4net,有1.2版本,有2.0版本的.当运行的时候发生冲突. 解决办法:在config中加入如下的配置 <dependentAs ...
- 一篇入门 -- Git
一. Git 介绍 Git作为一款分布式的==版本控制==工具,作为一名程序员,是必须要掌握的. 最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布.最初目的是为更好地 ...