1

そのため、jQueryプラグイン(jsonp)を使用してAPIへのクロスドメイン呼び出しを行い、JSONデータを取得しています。どういうわけかこのデータをXQueryページに取り込む必要があります。Marklogicサーバーを使用してすべてのXMLデータを保存していますが、JSONデータを処理するためのXDMP関数がいくつかあることを知っています。JavaScriptからXQueryにJSONを取得しているため、問題が発生しています。

これについてどうやって行くかについてのアイデアはありますか?

4

1 に答える 1

3

何が問題を引き起こしているのか100%はわかりませんが、うまくいけばあなたを道に導く解決策を提供しようとします。

GitHubにはMLJSON(https://github.com/marklogic/mljson/wiki)と呼ばれるオープンソースプロジェクトがあります。JSON文字列を受け取り、それを解析して、MarkLogicが簡単に利用できるXMLドキュメントを返すことができます。

XMLの内部構造を理解することが魅力的でない場合(かなり単純ですが、文書化されていません)、プロジェクトには、解析されたJSON文書からビットを抽出するためのパスパーサーも含まれています。これは、POSTまたはGETパラメーターとしてサーバーに送信されたJSONを取得し、それを解析して値を引き出す簡単なサンプルXQueryページです。

xquery version "1.0-ml";

import module namespace json="http://marklogic.com/json" at "lib/json.xqy";
import module namespace path="http://marklogic.com/mljson/path-parser" at "lib/path-parser.xqy";

let $jsonString := xdmp:get-request-field("json")
let $jsonXML := json:parse($jsonString)
let $firstName := path:select($jsonXML, "author.firstName", "json")

return concat("First name: ", $firstName)

上記のスクリプトが渡された場合、次のようなJSONドキュメントが渡されます。

{
    "author": {
        "firstName": "Noam",
        "lastName": "Chomsky"
    }
}

文字列「Firstname:Noam」が返されます。

MLJSONには、ここでは説明しませんが、JSONオブジェクトや配列などを構築し、それらをJSON文字列としてシリアル化する機能があることを説明します。

お役に立てば幸いです。

于 2011-09-22T22:35:46.130 に答える