.NEt专家博客!

BizTalk 平面文件解析 ---FlatFileSchema

上一篇 / 下一篇  2008-01-25 09:16:03

平面文件的解析是将一个文本格式的txt文件信息通过管道解析为具有xml消息体格式的消息实例的过程.BizTalk的开发环境提供了这样的解析向导.ITPUB个人空间W p%oiWp4FW
先看一下将要解析的文件内容(下载这个文件):
@(BDXzj0
muyanpeng
TRy I-fR0
13439394473
jsa/bo9c0muyanpeng_mail@
126.comITPUB个人空间Wr+^v`Jfz
1    beijing    haidian
'{ Q0l9J*dl0
2    dalian    zhongshan

c+Y/SR,]su0信息内容有姓名\电话\邮件\ 以及两个家庭住址
3N1hJ^1R%P;_t8\'r0
`2tj8zs:n*I:n0建立一个BizTalk工程 并添加一个平面文件解析的消息体,如图所示:
A%I a,[s t'{0
t]({Q;_C ` W0ITPUB个人空间!]x7r0SKT4g_]~
打开向导之后选中要解析的平面文件示例:ITPUB个人空间"J%l5Y3?B*YM
设定根节点名称Root,namespace以及编码格式。
eb6u4F0^Fx |0
pb/[VM&\!q0点击 Next>
Z-py!c|4E\` Yq0选择要解析的正文范围:ITPUB个人空间wOc;o"{'W@,g%A7\

^^*HKbG_ YC0点击 Next>
w{a%FQ%jrZJ0选择截取方式ITPUB个人空间i3}i5|*Y]x
ITPUB个人空间[Y n#s:B1s$xM
点击 Next>ITPUB个人空间cv'^._?\.h
ITPUB个人空间^i-~+MxXP|
点击 Next>ITPUB个人空间V.f0w,G DO ^
ITPUB个人空间*L^}pN qs
写入字段名称,选择相应的字段类型
SE,i&kMaE0在Element Type的选择上请注意!ITPUB个人空间!f"x&s6~&l6i/w
ITPUB个人空间m i'K0L Q
点击 Next>ITPUB个人空间O6ErB]9ewZ,[
到这里我们完成了第一部分基础信息的解析,并将重复的子集信息命名为info,接下来我们会重复进行向导并将info的信息进行一次解析。
jvX m _UF0具体操作如图:
G G%q[B0
C/h}!e8I~0ITPUB个人空间 t3gyN-cm

4@5bP,Xb0
oc8Y2k"`u9?4A0
MMH4@Q0
aM?vW EtJ0g:o0看一下生成的Schema:
b0Q$RETK-].})_0ITPUB个人空间V`*\ |&\F%|;M
  <?xml version="1.0" encoding="utf-16" ?> ITPUB个人空间*p+w_8k1o8]tIA
 
<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">
^5u2["Jy0 
<xs:annotation>ITPUB个人空间6u.cCz uQz:Y6C!P
 
<xs:appinfo>ITPUB个人空间Qj/q3y oH
  
<schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" /> ITPUB个人空间2hg:n"X-h9z8b7N9n
  
<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" /> ITPUB个人空间9V:H4KgL"J1WQ
  
</xs:appinfo>
G9I i)@b:M0  
</xs:annotation>
/s6?Xe*QI4~G[0 
<xs:element name="Root">
u{.l$o2E8Z0 
<xs:annotation>
xOyg/Q1W0 
<xs:appinfo>ITPUB个人空间\&gs7maq-v
  
<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" /> 
!o*eDh;o\-{0  
</xs:appinfo>ITPUB个人空间}w&@M"^&_[!PTd
  
</xs:annotation>
/W/c*q9mx;QSJ0 
<xs:complexType>ITPUB个人空间 f4L9x5`5~)d,}7q4K
 
<xs:sequence>ITPUB个人空间5|{c1n$clK;B p6s
 
<xs:annotation>ITPUB个人空间jc~(M1o}XB
 
<xs:appinfo>
}N3vM*~0  
<groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> ITPUB个人空间 Zz3SRl\'k7S]
  
</xs:appinfo>
4O5K)l(sE ONpm]0  
</xs:annotation>
Mk z%T9kjF oc0 
<xs:element name="Name" type="xs:string">
T[ [1bmJ0 
<xs:annotation>ITPUB个人空间9l F aB3e?[
 
<xs:appinfo>ITPUB个人空间1Gb2ASS
  
<b:fieldInfo justification="left" sequence_number="1" /> 
bcC7E#@P0  
</xs:appinfo>ITPUB个人空间N3y/TY{NAw
  
</xs:annotation>
K2uUU}0  
</xs:element>
nf)[dPFU0 
<xs:element name="Tel" type="xs:string">
+e6Ll*BpNF D0 
<xs:annotation>
%c5g,?2@PF#~T,s t0
<xs:appinfo>
.e5z.PE0f W8rID0  
<b:fieldInfo justification="left" sequence_number="2" /> ITPUB个人空间nFF:zil9BPd
  
</xs:appinfo>
'n%OZ1^"Uk:\0  
</xs:annotation>
g&R+G+vW J0  
</xs:element>ITPUB个人空间T%h I"zv
 
<xs:element name="E_Mail" type="xs:string">ITPUB个人空间 Z f \o?6dO
 
<xs:annotation>
W8t Jac4R0F0 
<xs:appinfo>
gp4J`-C&I D+W0  
<b:fieldInfo justification="left" sequence_number="3" /> ITPUB个人空间}7`.JxU/F
  
</xs:appinfo>ITPUB个人空间X/[l q1}W:S B DH9U
  
</xs:annotation>
.[Z9_ D#^(x2Pq'vl0  
</xs:element>
9Mm,HydrM0 
<xs:element maxOccurs="unbounded" name="Info">
_Y+^\K{0 
<xs:annotation>ITPUB个人空间)z?(]2t8v!~5lLt
 
<xs:appinfo>ITPUB个人空间m!lv^2\
  
<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" /> ITPUB个人空间it.S hMu
  
</xs:appinfo>
*y'Lgk["J&r\mV0  
</xs:annotation>
u0B[_A9|-g3c/L0 
<xs:complexType>
U kH%]_ ?[5B0 
<xs:sequence>
D U-p[[&T0e0 
<xs:annotation>
&J)PK8W Ww;]H#Rf1O0 
<xs:appinfo>ITPUB个人空间-SG/Aa4~ P:\.l"j
  
<groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> ITPUB个人空间|:LE3Eh)@"R
  
</xs:appinfo>
(Ch9KgD1nww2Va0  
</xs:annotation>ITPUB个人空间(t6O}M._c
 
<xs:element name="id" type="xs:string">
+t'V;cxE"c0 
<xs:annotation>ITPUB个人空间 EB$j*y/B|
 
<xs:appinfo>ITPUB个人空间3x.O0~]Uc7j2d
  
<b:fieldInfo justification="left" sequence_number="1" /> ITPUB个人空间Uq(A7hi+E:aA"b:?1?
  
</xs:appinfo>ITPUB个人空间]H_)G(M1I&m
  
</xs:annotation>
A G5` AK(~#i9bA|0  
</xs:element>ITPUB个人空间e,D6_ K:?i^
 
<xs:element name="city" type="xs:string">
B'U]M6n7`rD)O0 
<xs:annotation>ITPUB个人空间2V:B#h;g!k(^.D'P.m'UP
 
<xs:appinfo>ITPUB个人空间T$a x[,]gM
  
<b:fieldInfo justification="left" sequence_number="2" /> 
d1|B$of0  
</xs:appinfo>
:]gtt!hc4{0  
</xs:annotation>ITPUB个人空间1F!~&{+d FR
  
</xs:element>ITPUB个人空间h3|#j8z2ez5S(l
 
<xs:element name="space" type="xs:string">
8EB["HE5}!x0 
<xs:annotation>
KJREQZ:`0 
<xs:appinfo>
-_vGL+H0  
<b:fieldInfo justification="left" sequence_number="3" /> 
]/G)wI)t`0  
</xs:appinfo>
,O8uX1I1R`!bM;yz0  
</xs:annotation>
([)Ac8o Y~!o0  
</xs:element>
_!j X9F-Z~p0  
</xs:sequence>ITPUB个人空间x)J Gn]1CN!tr
  
</xs:complexType>
fn*kj7M:scv0  
</xs:element>ITPUB个人空间m2n,w~a ~+tE&D$H|:}s
  
</xs:sequence>
4y/gd+z&ej0  
</xs:complexType>ITPUB个人空间"q+d!n,{N zd5G)Hmw
  
</xs:element>
r4EO*D7P2zM @/~Ct0  
</xs:schema>
ITPUB个人空间7hP9Q0lA3Ch'_iAw
至此我们的平面文件解析用的schema就基本完成了,接下来我们做一个接收管道:
d3D;N!oP:nn0ITPUB个人空间q_$k geb
ITPUB个人空间5h |XF'[f'a
发布部署工程 并进行配置:
0MGgFF0接收端口(选择刚才建立的接收管道):ITPUB个人空间8`X M)~7iz`%Vm:G

KG/d%~/w#aba i0ITPUB个人空间.qF @7gYvKW_
发送端口(指定输出位置之后直接绑定到接收端口):ITPUB个人空间:l r5J3d)E0}D&xn

Q*`+N/|'O\0ITPUB个人空间9G W"|{-m KO
ITPUB个人空间 op#Le[
最后测试一下:ITPUB个人空间X)hx%A B
解析后的输出结果:
K1l,~2x RN0ITPUB个人空间"~eRe9Wb
<?xml version="1.0" encoding="utf-8"?>
SPF[&x.w/uf0
<Root xmlns="http://FlatFileSchema.FlatFileSchema1">ITPUB个人空间v"_u7}[9X
<Name xmlns="">muyanpeng</Name>ITPUB个人空间 c:P(R{j4bD
<Tel xmlns="">13439394473</Tel>
:u!L P w^ y1X0
<E_Mail xmlns="">muyanpeng_mail@126.com</E_Mail>ITPUB个人空间iA^%@5y
<Info xmlns="">ITPUB个人空间Y eUul$^(T6y \
<id>1</id>
1uZ)^ Q'sP0
<city>beijing</city>
!cFvs$dZ:}9] r0
<space>haidian</space>
"U'pmt.q\8o0
</Info>
k(r |xCK(a e0
<Info xmlns="">
6p*q7~$Eg3u)k0
<id>2</id>ITPUB个人空间;U$[NSvkF+i+[*U
<city>dalian</city>ITPUB个人空间8l/hOH#iz
<space>zhongshan</space>ITPUB个人空间.`*{-km6Y%k,{B'|6O
</Info>
Q4zlT\(l} jB0
</Root>

9cdUw,~$LR%_E0ITPUB个人空间jV?-Fj"x[
OK 搞定~   惯例:源码下载点这里ITPUB个人空间P3A!]#pMs)i:L)R-\G

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 66949
  • 日志数: 1904
  • 影音数: 7
  • 文件数: 1
  • 建立时间: 2008-01-04
  • 更新时间: 2008-12-04

RSS订阅

Open Toolbar