0

通知Worklightアダプターで-バックエンドサービスから非常に長いXML文字列を渡してアダプターを呼び出します。

バックエンドサービスを変更または変更することはできません。

javascript Stringオブジェクトを解析して、次のような便利な関数を使用できるものに変換できるようにしたいです。

var custNum = doc.getElementsByTagName("data:custNum")[0];

ただし、これまでの「doc」変数の作成はすべて失敗しました。標準のDOMParserおよびwindowメソッドは未定義であり、アダプターのスコープ外です。ノードを見つけるために長い文字列分割に頼るのはやめたほうがいいです。

どうもありがとう

4

3 に答える 3

2

returnsedContentType:"xml"を設定します。これにより、WLプラットフォームはXMLを自動的に解析し、操作可能なJSONに変換します。

例えば

<a>
  <b>
     c
  </b>
</a>

に変換されます

{"a": 
     {"b":"c"}
}

したがって、response.abのような構文で値を取得できます

于 2013-03-12T06:13:16.283 に答える
1



XSL変換フィルタリングを使用して、XMLから不要なデータをすべて削除する必要があります。
このようなものは、アダプタのJavaScript関数である必要があります。

function getFeedsFiltered() {

    var input = {
        method : 'get',
        returnedContentType : 'xml',
        path : "rss.xml",
        transformation : {
            type : 'xslFile',
            xslFile : 'filtered.xsl'
        }
    };

    return WL.Server.invokeHttp(input);
}

このようなものがXSLファイルに含まれている必要があります

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml"
                xmlns:dc="http://purl.org/dc/elements/1.1/" >
    <xsl:output method="text"/>

    <xsl:template match="/">
        {
            'Items': [
                <xsl:for-each select="//item">
                    {
                        'title': '<xsl:value-of select="title"/>',
                        'creator': '<xsl:value-of select="dc:creator"/>',
                        'link': '<xsl:value-of select="link"/>',
                        'pubDate': '<xsl:value-of select="pubDate"/>'
                    },
                </xsl:for-each>
            ]
        }
    </xsl:template>

</xsl:stylesheet>

「IBMWorklight入門」 (http://www.ibm.com/developerworks/mobile/worklight/getting-started.htmlモジュール5.2-HTTPアダプターの作成ftp://public.dhe.ibm.com/software )を確認してください。 /mobile-solutions/worklight/docs/v505/Module_05_2_-_Creating_HTTP_Adapters.pdf)およびその演習とコードサンプルftp://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v505/module_05_2_HTTP_Adapter。 zip)。

于 2013-03-13T05:13:34.407 に答える
0

結局、私はこのような関数を書きました:

function findNode(node,string){

    var nodeEnd = node.slice(0, 1) + "/" + node.slice(1);
    var chunk = string.split(node)[1];
    var chunk2 = chunk.split(nodeEnd)[0];

    return chunk2;

}

私が使用するもの-素晴らしくてシンプル。

于 2013-03-14T17:20:19.970 に答える