博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BizTalk 新增/修改/删除 XmlDocument 名字空间的高效方法
阅读量:7127 次
发布时间:2019-06-28

本文共 4210 字,大约阅读时间需要 14 分钟。

新增一个名字空间

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");        }    }

  

 

转载地址:http://snhel.baihongyu.com/

你可能感兴趣的文章
Buffer
查看>>
Ubuntu 下 vi 输入方向键会变成 ABCD 的解决方法
查看>>
hihoCoder1687(向量叉积)
查看>>
20165211 获奖感想及java课程总结
查看>>
POJ 3252, Round Numbers
查看>>
荒野无灯路由器固件配置DDNS的过程
查看>>
Dotest-两张图告诉你,为什么要测试兼容性?
查看>>
HTML 5 History API的”前生今世”
查看>>
【iOS】iOS消息推送机制的实现
查看>>
电脑高手常用快捷键
查看>>
杨辉三角形
查看>>
css3 flex笔记整理
查看>>
swift 分组tableview 设置分区投或者尾部,隐藏默认间隔高度
查看>>
MySQL案例09:Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
查看>>
js 图片压缩 转成base64
查看>>
文艺小青年
查看>>
[转]制作Chrome扩展
查看>>
Tcpdump抓包
查看>>
正则表达式抓取网页中的邮箱地址
查看>>
关于在主进程返回;线程陷入死循环
查看>>