BizTalk -->

by muyanpeng

导航

BizTalk 中 xpath的应用

Posted on 2007-11-01 17:05  穆彦鹏  阅读(814)  评论(2编辑  收藏  举报


其实xpath看起来比较麻烦,一般新手在遇到它的时候都不太会用它,其实它是很灵活也很方便的.在BizTalk的中xpath这个内置函数,在我们进行流程的开发的时候往往可以帮上大忙.

xpath用于筛选特定的记录值,个人对它的几点感受:
1.适合操作单一的值,在非属性的数据操作的时候进行单一值的读写.
2.能够将某个节点以XmlDocument的类型输出,但是不建议用它在这一方面进行过多操作.它只能够做节点值的提取.再复杂一点的就要教给DLL来做了.
3.读取操作的时候一般使用string类型转化获取到的值.

接下来我介绍xpath使用的语法:
xpath(message, xpathExpression)
图示:


1.使用xpath对消息中某个特定值进行操作,对其赋值句法:
注意: 因为在BizTalk的中,消息只有在构造的时候是可以修改的,当它离开构造模块之后,就只能是只读的,所以下面的语句也只能出现在MessageAssignment中

将Message_3中的temp节点 赋值为 "info temp"语法:

xpath(Message_3,"/*[local-name()='Root' and namespace-uri()='http://FlatFile.Schema3']/*[local-name()='temp' and namespace-uri()='']")="Info temp";

 

Message_3代表的是消息
/*[local-name()='Root' and namespace-uri()='http://FlatFile.Schema3']/*[local-name()='temp' and namespace-uri()='']代表的是进行操作的节点的xpath值

 2.使用xpath对消息中某个特定值进行操作,对其读取句法:
一般使用这种语句的的位置在:Expression MessageAssignment,可能是将值传递给流程变量或者直接对应到另一个消息的某个节点
如下所示:将Message_b消息中的info节点的值转换为string类型,并赋值到Message_a的info节点:

xpath(Message_a,"/*[local-name()='info' and namespace-uri()='http://FlatFile.Schema2']"= xpath(Message_b,"string(/*[local-name()='Root' and namespace-uri()='http://FlatFile.Schema4']/*[local-name()='info' and namespace-uri()=''])");


对了 还要告诉大家怎么得到一个节点的xpath:
找到消息的定义那里,然后选择一个节点,查看它的属性,有一个叫xpath的值,就是它了.
明显点,贴张图出来 ;)

最后再抄两个学习xpath的URL:xpath,xpathfunctions


OK 就先写这些吧