我已经决定使用XFormat节点从一个使用PHP调用的API中获取。下面是从JSON字符串转换为XMLDocument的XML数据的结果:
<root>
<salesValue>5000</salesValue>
<authorId>2</authorId>
</root>通过阅读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调用工作流的脚本:
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(); }谢谢你提前..。
发布于 2014-10-06 12:40:33
自定义属性中的值应该只包含xpath,并且自定义属性的名称应该与表达式中的占位符匹配。
您可以在https://developers.flowgear.net/kb/Node:XFormat#Examples上找到这些文档
发布于 2014-10-06 11:41:12
Xpath中元素的地址最多可分为三部分:
foo,html -这是强制性的n1:foo,xhtml:html - No前缀,意思是没有名称空间children::foo,following-sibling::xhtml:div-默认值是children您的XML没有名称空间。它只是有很好的形式。因此,将“salesValue”或“authorId”作为名称空间前缀是错误的。
处理文档根中的值:
/root/salesValue/root/authorId我认为test1:在这个例子中,链接的页面只是为XPath表达式提供一个标识符,而不是它的一部分。
https://stackoverflow.com/questions/26212355
复制相似问题