BizTalk -->

by muyanpeng

导航

BizTalk 平面文件解析 ---FlatFileSchema

Posted on 2007-11-01 17:27  穆彦鹏  阅读(803)  评论(0编辑  收藏  举报

平面文件的解析是将一个文本格式的txt文件信息通过管道解析为具有xml消息体格式的消息实例的过程.BizTalk的开发环境提供了这样的解析向导.
先看一下将要解析的文件内容(下载这个文件):
muyanpeng
13439394473
muyanpeng_mail@
126.com
1    beijing    haidian
2    dalian    zhongshan

信息内容有姓名\电话\邮件\ 以及两个家庭住址

建立一个BizTalk工程 并添加一个平面文件解析的消息体,如图所示:


打开向导之后选中要解析的平面文件示例:
设定根节点名称Root,namespace以及编码格式。

点击 Next>
选择要解析的正文范围:

点击 Next>
选择截取方式

点击 Next>

点击 Next>

写入字段名称,选择相应的字段类型
在Element Type的选择上请注意!

点击 Next>
到这里我们完成了第一部分基础信息的解析,并将重复的子集信息命名为info,接下来我们会重复进行向导并将info的信息进行一次解析。
具体操作如图:






看一下生成的Schema:

  <?xml version="1.0" encoding="utf-16" ?> 
 
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://FlatFileSchema.FlatFileSchema1" targetNamespace="http://FlatFileSchema.FlatFileSchema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
<xs:annotation>
 
<xs:appinfo>
  
<schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" /> 
  
<b:schemaInfo standard="Flat File" codepage="65001" default_pad_char="" pad_char_type="char" count_positions_by_byte="false" parser_optimization="speed" lookahead_depth="3" suppress_empty_nodes="false" generate_empty_nodes="true" allow_early_termination="false" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" root_reference="Root" /> 
  
</xs:appinfo>
  
</xs:annotation>
 
<xs:element name="Root">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:recordInfo structure="delimited" child_delimiter_type="hex" child_delimiter="0xD 0xA" child_order="infix" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
  
</xs:appinfo>
  
</xs:annotation>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:annotation>
 
<xs:appinfo>
  
<groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
  
</xs:appinfo>
  
</xs:annotation>
 
<xs:element name="Name" type="xs:string">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="1" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
 
<xs:element name="Tel" type="xs:string">
 
<xs:annotation>
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="2" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
 
<xs:element name="E_Mail" type="xs:string">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="3" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
 
<xs:element maxOccurs="unbounded" name="Info">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:recordInfo structure="delimited" child_delimiter_type="hex" child_delimiter="0x9" child_order="infix" sequence_number="4" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
  
</xs:appinfo>
  
</xs:annotation>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:annotation>
 
<xs:appinfo>
  
<groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
  
</xs:appinfo>
  
</xs:annotation>
 
<xs:element name="id" type="xs:string">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="1" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
 
<xs:element name="city" type="xs:string">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="2" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
 
<xs:element name="space" type="xs:string">
 
<xs:annotation>
 
<xs:appinfo>
  
<b:fieldInfo justification="left" sequence_number="3" /> 
  
</xs:appinfo>
  
</xs:annotation>
  
</xs:element>
  
</xs:sequence>
  
</xs:complexType>
  
</xs:element>
  
</xs:sequence>
  
</xs:complexType>
  
</xs:element>
  
</xs:schema>

至此我们的平面文件解析用的schema就基本完成了,接下来我们做一个接收管道:


发布部署工程 并进行配置:
接收端口(选择刚才建立的接收管道):


发送端口(指定输出位置之后直接绑定到接收端口):



最后测试一下:
解析后的输出结果:

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://FlatFileSchema.FlatFileSchema1">
<Name xmlns="">muyanpeng</Name>
<Tel xmlns="">13439394473</Tel>
<E_Mail xmlns="">muyanpeng_mail@126.com</E_Mail>
<Info xmlns="">
<id>1</id>
<city>beijing</city>
<space>haidian</space>
</Info>
<Info xmlns="">
<id>2</id>
<city>dalian</city>
<space>zhongshan</space>
</Info>
</Root>


OK 搞定~   惯例:源码下载点这里