我决定使用XFormat节点从使用PHP的API调用中获取我的JSON POSTFIELDS。下边是 XML数据从JSON字符串转换为XMLDocument的结果:
<root>
<salesValue>5000</salesValue>
<authorId>2</authorId>
</root>
从https://developers.flowgear.net/kb/Node:XPath_Match读取我提出了以下xpath 抓住我感兴趣的值并将它们注入我的SQL查询:
我已选择XML作为该属性的转义值,不确定它应该是哪一个。我得到的错误是:
(XFormat 1.0.0.1):未定义命名空间前缀'salesValue'。
我猜问题是我如何格式化我的xpath以试图获取这些值。我的XFormat节点的表达式属性中的SQL查询如下所示:
SELECT `Book`.`id` , `Book`.`name` , `Book`.`isbn` , `Book`.`quantity_in_stock` , `Book`.`price` , (`Book`.`quantity_in_stock` * `Book`.`price`) AS `sales`,
concat(`Author`.`name`, ' ', `Author`.`surname`) AS `author` FROM `books` AS `Book` LEFT JOIN authors AS `Author` ON ( `Book`.`author_id` = `Author`.`id` )
WHERE (`Book`.`quantity_in_stock` * `Book`.`price`) > {salesValue} AND `Book`.`author_id` = " {authorId}"
如果我在该查询中注入了这些值,我将能够继续前进。下面是我用来通过API调用WORKFLOW的脚本:
try{
$results = invokeFlowgear("https://domain.flowgear.io/authorbooksaleslist", "login", "passwrd", 30,
array(
'salesValue' => 5000.00,
'authorId' => 2
));
var_dump($results);
}catch(Exception $exc){ print $exc->getMessage(); }
提前谢谢你......
答案 0 :(得分:1)
自定义属性中的值应仅包含xpath,并且自定义属性的名称应与Expression中的占位符匹配。
您可以在https://developers.flowgear.net/kb/Node:XFormat#Examples
找到相关文档答案 1 :(得分:0)
Xpath中元素的地址最多可包含三个部分:
foo
,html
- 这是强制性的n1:foo
,xhtml:html
- 没有前缀,表示没有名称空间children::foo
,following-sibling::xhtml:div
- 默认为children
您的XML没有名称空间。它刚刚完好无损。因此,提供&#39; salesValue&#39;或者&#39; authorId&#39;因为名称空间前缀是错误的。
解决文档根目录中的值:
/root/salesValue
/root/authorId
我认为test1:在示例中,链接页面只是为Xpath表达式提供标识符而不是它的一部分。