如何在BizTalk中使用XSLT去除空标签内的多余空格
Visual Studio XSLT处理器空标签多余空格解决方案
- 调整XSLT全局输出配置
直接在XSLT文件根节点下添加output配置,禁用缩进即可从根源避免处理器自动插入空格,无需修改业务逻辑代码:
该配置对全局输出生效,完全适配BizTalk默认搭载的.NET平台XSLT处理器逻辑。<xsl:output method="xml" indent="no" omit-xml-declaration="no" encoding="UTF-8" /> - 通过XML序列化二次处理输出结果
若无法修改现有存量XSLT文件,可在转换完成后调用.NET XML类库重新序列化内容,自动清除自闭合标签的多余空格:
若是在BizTalk管道流程中处理,可直接在发送管道的XML汇编器配置中关闭「缩进输出」选项,汇编阶段会自动清理多余空格。// 加载XSLT输出的XML内容 XDocument xmlDoc = XDocument.Parse(xsltResultStr); // 输出时自动生成无空格的标准自闭合标签 string formattedXml = xmlDoc.ToString(SaveOptions.DisableFormatting); - 自定义XSLT扩展对象控制序列化
对有复杂输出要求的场景,可以封装自定义序列化的扩展方法注入到XSLT上下文,需要输出空节点时调用扩展方法生成标准格式的标签,不需要修改原有的XSLT结构。
这类多余空格是.NET平台XSLT处理器默认序列化逻辑的正常输出,符合XML 1.0规范,但部分XML转JSON的解析器会将自闭合标签中的空格识别为内容属性,才会导致后续转换异常,上述方案均不需要修改现有空节点的查询逻辑即可解决问题。
内容的提问来源于stack exchange,提问作者Piotr Grudzień
相关产品推荐
相关产品推荐

