0

XFormat ノードを使用して、PHP を使用した API 呼び出しから JSON POSTFIELDS を取得することにしました。以下は、JSON 文字列から XMLDocument に変換された XML データの結果です。

<root>
  <salesValue>5000</salesValue>
  <authorId>2</authorId>
</root>

https://developers.flowgear.net/kb/Node:XPath_Matchから読んで、興味のある値を取得して SQL クエリに挿入するために、次の xpath を思いつきました。

  • salesValue:root/salesValue
  • 作成者 ID:root/作成者 ID

そのプロパティのエスケープ値として 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(); }

前もって感謝します...

4

2 に答える 2

1

カスタム プロパティの値には xpath のみを含める必要があり、カスタム プロパティの名前は式のプレースホルダーと一致する必要があります。

ドキュメントはhttps://developers.flowgear.net/kb/Node:XFormat#Examplesにあります。

于 2014-10-06T12:40:33.603 に答える
0

Xpath の要素のアドレスには、最大 3 つの部分を含めることができます。

  1. ローカル名または * (すべての) 要素: foo, html- これは必須です
  2. 名前空間プレフィックス/エイリアス: n1:foo, xhtml:html- プレフィックスなし、名前空間がないことを意味します
  3. 要素の初期リストを定義する軸: children::foo, following-sibling::xhtml:div- デフォルトはchildren

XML に名前空間がありません。それは整形式です。そのため、名前空間プレフィックスとして「salesValue」または「authorId」を提供することは間違っています。

ドキュメント ルートからの値のアドレス指定:

  • /root/salesValue
  • /root/authorId

test1: の例では、リンクされたページは Xpath 式に識別子を提供するだけであり、その一部ではないと思います。

于 2014-10-06T11:41:12.773 に答える