利用Biztalk Flat File Disasembler来解析CSV文件
2008-10-31 23:12
344 查看
CSV文件作为一种的简单数据文件交换标准,在商业上活动尤其是B2B中被大量采用。
在Biztalk中可以使用Flat File Disasembler来解析这类格式的文件,以下样例采用Biztalk Server 2006 R2作为开发环境。
使用的csv样例文件内容如下 :
ItemNumber,Description,IssueDate,IssueUser,Status
00-011-003,微软Office2007,2008-9-27,uid01,A
00-022-234,Vista旗舰版,2008-4-1,uid02,D
00-101-001,"xbox 360, ""elite"" edition",2006-7-5,uid03,A
步骤如下:
Step 1: 在添加项目文件中选择Flat File Schema Wizard,启动平板文件schema向导。
Step 2: 输入样例文件以提供向导进行平板文件的结构分析,定义需要生成的Flat File Schema的根节点名称已经Namespace,
同时选择正确的代码页以对平板文件进行正确的解码。
Step 3: 选择前两行数据以提供结构分析,这里要注意的是一定要同时选中每行中最后两个字符,及回车换行符,这样做是为了进行行结构的分析。
整个向导中有两级分析过程,一级是行分析,一级是字段分析 。字段分析会在稍后进行介绍。
Step 4: 选择根据分隔符来解析还是使用相对位置来拆分行集,这里选择分隔符方式。
Step 5: 选择行分隔字符串,由于之前选中的是前两行文本内容,分析器会把选中的所有内容作为一条字符串来进行分析,
那么每行的内容就相当于被分隔符所划分出来的Child(或者说单元格),要把一套字符串分割为两行文字,自然需要使用windows的标准换行符{CR}{LF},即回车换行符。
Step 6: 设定分隔后的元素数据类型。文件头是固定的,所以采用Record类型,而内容则采用Repeating record类型,表示可以重复的记录项。
Step 7: 这样就定义出来根节点中的两个子节点,Header和Record。 选择Header以进行文件头字段的设置。
Step 8: 在Header的字段设置中,请选择前面提取出的样例文本的首行文字内容,注意这里不要选取回车换行符。
Step 9: 同样采用分隔符方式来进行字段级别的拆分。
Step 10: 这里的Child就是首行中的以逗号分隔的字段,按照CSV标准必须采用","进行分隔。
非CSV标准的结构化平板文件可以选择采用别的符号来进行字段的拆分,如tab等 。
Step 11: 按照样例内容提示来设置的Header节点在即将生成的Flat File Schema中的对应节点名称,已经xml中的元素类型(element或attribute)和数据类型。
Step 12: 按同样的方式来对Record节点进行设置。
Step 13: 通过向导设置完毕的Flat File Schema。
Step 14: 这一步比较关键,按照CSV标准,双引号属于特殊的字符,包含在双引号中的文字包括逗号分隔符会被当做文本内容进行处理,且文本中的双引号需要成对的双引号进行转义
如样例文档中第4行第2个单元格中的文本:"xbox 360, ""elite"" edition"
按CSV标准应该被解析为xbox 360, "elite" edition这样的内容。
在生成的Flat File Schema中,在其Schema层的属性栏中需要设置Default Wrap Character为双引号。
这样就将整个schema中的包装符号设置为了双引号。
但是还需要在每个字段中设置其Wrap Character Type的属性为Default Wrap Character,才能实际应用到每个单元格上。
(这一点设置上感觉比较麻烦,但毕竟Flat File Schema并不只是设计用于CSV这种需要Wrap Character的文件格式)
通过将schema文件的Generate Instance Output Type属性设置为“Native”即可测试看生成的xml文件是否正确。
Step15: 创建自定义的Pipeline,将Flat file disassembler组件从工具箱中拖入Disasseble stage中,
然后将 Flat file disassembler组件的Document Schema属性设置为刚刚创建的csv schema。
到此就已经创建完成能够解析CSV Flat File的自定义Pipeline组件,
在将其部署到Biztalk Application之后,只要在需要使用的Receive Location中选择此Pipeline即可。
在Biztalk中可以使用Flat File Disasembler来解析这类格式的文件,以下样例采用Biztalk Server 2006 R2作为开发环境。
使用的csv样例文件内容如下 :
ItemNumber,Description,IssueDate,IssueUser,Status
00-011-003,微软Office2007,2008-9-27,uid01,A
00-022-234,Vista旗舰版,2008-4-1,uid02,D
00-101-001,"xbox 360, ""elite"" edition",2006-7-5,uid03,A
步骤如下:
Step 1: 在添加项目文件中选择Flat File Schema Wizard,启动平板文件schema向导。
Step 2: 输入样例文件以提供向导进行平板文件的结构分析,定义需要生成的Flat File Schema的根节点名称已经Namespace,
同时选择正确的代码页以对平板文件进行正确的解码。
Step 3: 选择前两行数据以提供结构分析,这里要注意的是一定要同时选中每行中最后两个字符,及回车换行符,这样做是为了进行行结构的分析。
整个向导中有两级分析过程,一级是行分析,一级是字段分析 。字段分析会在稍后进行介绍。
Step 4: 选择根据分隔符来解析还是使用相对位置来拆分行集,这里选择分隔符方式。
Step 5: 选择行分隔字符串,由于之前选中的是前两行文本内容,分析器会把选中的所有内容作为一条字符串来进行分析,
那么每行的内容就相当于被分隔符所划分出来的Child(或者说单元格),要把一套字符串分割为两行文字,自然需要使用windows的标准换行符{CR}{LF},即回车换行符。
Step 6: 设定分隔后的元素数据类型。文件头是固定的,所以采用Record类型,而内容则采用Repeating record类型,表示可以重复的记录项。
Step 7: 这样就定义出来根节点中的两个子节点,Header和Record。 选择Header以进行文件头字段的设置。
Step 8: 在Header的字段设置中,请选择前面提取出的样例文本的首行文字内容,注意这里不要选取回车换行符。
Step 9: 同样采用分隔符方式来进行字段级别的拆分。
Step 10: 这里的Child就是首行中的以逗号分隔的字段,按照CSV标准必须采用","进行分隔。
非CSV标准的结构化平板文件可以选择采用别的符号来进行字段的拆分,如tab等 。
Step 11: 按照样例内容提示来设置的Header节点在即将生成的Flat File Schema中的对应节点名称,已经xml中的元素类型(element或attribute)和数据类型。
Step 12: 按同样的方式来对Record节点进行设置。
Step 13: 通过向导设置完毕的Flat File Schema。
Step 14: 这一步比较关键,按照CSV标准,双引号属于特殊的字符,包含在双引号中的文字包括逗号分隔符会被当做文本内容进行处理,且文本中的双引号需要成对的双引号进行转义
如样例文档中第4行第2个单元格中的文本:"xbox 360, ""elite"" edition"
按CSV标准应该被解析为xbox 360, "elite" edition这样的内容。
在生成的Flat File Schema中,在其Schema层的属性栏中需要设置Default Wrap Character为双引号。
这样就将整个schema中的包装符号设置为了双引号。
但是还需要在每个字段中设置其Wrap Character Type的属性为Default Wrap Character,才能实际应用到每个单元格上。
(这一点设置上感觉比较麻烦,但毕竟Flat File Schema并不只是设计用于CSV这种需要Wrap Character的文件格式)
通过将schema文件的Generate Instance Output Type属性设置为“Native”即可测试看生成的xml文件是否正确。
Step15: 创建自定义的Pipeline,将Flat file disassembler组件从工具箱中拖入Disasseble stage中,
然后将 Flat file disassembler组件的Document Schema属性设置为刚刚创建的csv schema。
到此就已经创建完成能够解析CSV Flat File的自定义Pipeline组件,
在将其部署到Biztalk Application之后,只要在需要使用的Receive Location中选择此Pipeline即可。
相关文章推荐
- 利用python对csv文件的log解析
- 利用utl_file将数据导出为csv文件 http://ningoo.itpub.net
- 利用Python解析CSV文件
- 利用FindFirstFile()以及FindNextFile()函数 实现遍历文件夹里的文件
- 利用Dockerfile文件创建带有sshd服务的centos镜像
- 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码
- 在Android中,WebView中的<file>标签不能上传文件的解析
- java 解析 csv 文件
- jsp html input="file" 浏览时只显示指定文件类型 xls、xlsx、csv
- Windows下MySQL导入csv文件ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
- 利用Jakarta commons fileupload组件实现多文件上传
- PHP解析CSV文件为数组
- C++Builder利用URLDownloadToFile下载文件并显示进度
- oracle读写文件--利用utl_file包对磁盘文件的读写操作
- python读取csv文件是报错_csv.Error: iterator should return strings, not bytes (did you open the file in text
- 发布一个biztalk 解析Excel文件到xml消息的管道组件
- iMOOC学习笔记:Java的Excel读写操作入门实践-利用POI解析Excel文件(二)
- 利用poi解析word文件
- 【C#】利用System.IO中的File类中的ReadAllText与WriteAllText输入输出小文件
- Java利用File类中rename()移动文件