如何在BizTalk编排xpath中将int转换为decimal
本文关键字:int 转换 decimal 中将 xpath BizTalk 编排 | 更新日期: 2023-09-27 18:22:27
如何在编排中使用xpath将int转换为decimal?当我的QuantityReturned字段调用它转换为十进制并调用webservice时,它在我的模式中是integer类型。下面是QuantityReturned的xpath查询。
QuantityReturned=xpath(OrderReturnMessage,
"number(/*[local-name()='QuantityReturned' and namespace-uri()=''])");
wSReturnSuccess = WebServiceHelper.CreateReturnAAAWS
(System.Convert.ToDecimal(QuantityReturned));
当在xpath查询中尝试使用数字函数时,会抛出输入字符串格式不正确的错误。
很可能您的xpath不正确,并且返回了一个无法转换为十进制的值。
您能根据消息xml评估您的xpath并查看实际返回的内容吗?当前表达式解析为名为QuantityReturned的非限定根级别元素的值。
除非您的消息xml与此匹配,否则您的xpath可能会返回空字符串。
除了Tom Redfern的答案(这可能是根本原因)之外,我建议将其重构为外部程序集中的调用,例如:
public static decimal StringToDecimal(string s)
{
if (string.IsNullOrWhiteSpace(s))
{
// log error, throw exception, or just return a default value if acceptable
}
decimal d;
if (decimal.TryParse(s, out d))
{
return d;
}
else
{
// appropriately log errors and/or throw a more meaningful exception
}
}
您还可以查看TryParse
的其他重载提供的一些NumberStyles
选项。
您可以在编排中执行此操作,但如果此方法变得更加复杂,它在表达式编辑器中会开始看起来非常难看,即使它在表达式编辑中也会看起来有点难看。