assign
是osb里最常用的组件,用来对变量进行赋值。假设有以下一段xml
<book>
<name>java编程思想</name>
<author>
<username>jianfeng</username>
<email>jianfeng.zheng@definesys.com</email>
</author>
</book>
现需获取name
和author标签中对email
字段
assign
需要提供两个参数,如图
Expression:
xml片段或者xpath表达式variable:
变量名称(不带$符号)
获取 name
:
Expression:
$P_XML/name/text()
获取email
:
Expression:
$P_XML/author/email/text()
text()表示获取文本类型数据
$P_XML表达存储xml片段变量
新建一个assign组件,写好xpath表达式,可以点击Test
进行测试
点击Execute
查看执行结果
如果把text()
去掉是什么结果?
是一段xml片段
- 给上面xml片段加上命名空间,加上命名空间后xml代码如下
<book xmlns="http://definesys.com">
<name>java编程思想</name>
<author>
<username>jianfeng</username>
<email>jianfeng.zheng@definesys.com</email>
</author>
</book>
这时候如果还是使用$P_XML/name/text()
是无法获取数据的
因为缺少命名空间,需要在Expression界面增加命名空间
Prefix:
命名空间前缀可以自定义URI:
命名空间路径,即上面xmlns内容将表达式修改为
$P_XML/df:name/text()
获取email表达式变更为
$P_XML/df:author/df:email/text()
author和email都要加上命名空间前缀,不然还是无法获取数据。
网友评论