You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程实现BizTalk平面文件映射的单元测试?

解决方案

问题1:程序化让映射直接接受平面文件输入

你当前用XslCompiledTransform直接执行映射的XSL,绕开了BizTalk原生的映射执行流程,这就是没法自动处理平面文件转XML的原因。正确做法是使用BizTalk提供的映射执行API,而非直接操作XSL:

  • 引用Microsoft.BizTalk.Map.dll和Microsoft.BizTalk.Streaming.dll两个程序集
  • 直接实例化你的映射类(继承自TransformBase的类)来执行转换,它会自动关联平面文件架构完成原生文件到XML的转换,和VS里“测试映射”的逻辑完全一致

示例代码:

using Microsoft.BizTalk.Map;
using System.IO;
using System.Text;

// 加载目标平面文件
var flatFilePath = @"C:\test\input.txt";
var inputStream = new FileStream(flatFilePath, FileMode.Open);

// 初始化自定义映射
var mapInstance = new YourCustomMap();
var transformArgs = new TransformArgs();

// 指定输入对应的平面文件架构
transformArgs.InputSchemas = new[] { typeof(YourFlatFileSchema) };

// 执行映射并输出结果
using var outputStream = new MemoryStream();
mapInstance.Transform(inputStream, outputStream, transformArgs);

// 读取转换后的XML结果
outputStream.Position = 0;
var resultXml = new StreamReader(outputStream).ReadToEnd();

问题2:单独将平面文件转换为符合架构的XML

如果只需要完成平面文件到XML的转换,直接用BizTalk的FlatFileReader类即可,这就是VS“测试映射”功能底层依赖的解析器:

using Microsoft.BizTalk.Parser;
using System.IO;
using System.Xml;

// 初始化平面文件阅读器,关联对应的架构
var flatFileReader = new FlatFileReader(typeof(YourFlatFileSchema));

// 加载平面文件流
using var inputStream = new FileStream(@"C:\test\input.txt", FileMode.Open);
flatFileReader.Initialize(inputStream);

// 解析并生成XML文档
var xmlReader = flatFileReader.XmlReader;
var xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);

// 保存或进一步处理转换后的XML
xmlDoc.Save(@"C:\temp\transformed.xml");

转换完成后,你可以用之前熟悉的方式(XDocument关联架构)验证生成的XML是否符合要求。


内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:50:55