2017-06-22 1 views
1

私はCodename Oneアプリを開発する道路ブロックに遭遇しました。私のクラスのプロジェクトの1つは、ウェブサイトから3つの特定のhtml "td"要素を解析し、そのテキストを文字列に保存し、そのテキストデータをCodename Oneマルチボタンに入力します。もともと私はこの操作にjSoupを使用しましたが、すぐにCodename Oneがサードパーティ製のjarファイルをサポートしていないことを認識しましたので、この方法を以下のように使用しました。Codename OneのWebサイトから特定のデータを解析するにはどうすればよいですか?

public void showOilPrice() { 
    if (current != null) { 
     current.show(); 
     return; 
    } 
    WebBrowser b = new WebBrowser() { 
     @Override 
     public void onLoad(String url) { 
      BrowserComponent c = (BrowserComponent) this.getInternal(); 
      JavascriptContext ctx = new JavascriptContext(c); 
      String wtiLast = (String) ctx.get("document.getElementById('pair_8849').childNodes[4].innerText"); 
      String wtiPrev = (String) ctx.get("document.getElementById('pair_8849').childNodes[5].innerText"); 
      String wtiChange = (String) ctx.get("document.getElementById('pair_8849').childNodes[8].innerText"); 
      Form op = new Form("Oil Prices", new BoxLayout(BoxLayout.Y_AXIS)); 
      MultiButton wti = new MultiButton("West Texas Intermediate"); 
      Image icon = null; 
      Image emblem = null; 
      wti.setEmblem(emblem); 
      wti.setTextLine2("Current Price: " + wtiLast); 
      wti.setTextLine3("Previous: " + wtiPrev); 
      wti.setTextLine4("Change: " + wtiChange); 
      op.add(wti); 
      op.show(); 
     } 
    }; 
    b.setURL("https://sslcomrates.forexprostools.com/index.php?force_lang=1&pairs_ids=8833;8849;954867;8988;8861;8862;&header-text-color=%23FFFFFF&curr-name-color=%230059b0&inner-text-color=%23000000&green-text-color=%232A8215&green-background=%23B7F4C2&red-text-color=%23DC0001&red-background=%23FFE2E2&inner-border-color=%23CBCBCB&border-color=%23cbcbcb&bg1=%23F6F6F6&bg2=%23ffffff&open=show&last_update=show"); 
} 

この方法は、シミュレータで動作します(と「減価償却API」の警告を与える)が、私は署名した後、オンラインでの私のビルドを提出したときに実行されません。私はparse4cn1とcn1JSONライブラリをインポートし、一連の障害を経験しましたが、提出するとビルドエラーが発生します。私は新鮮なものから始まり、もし存在すれば代替方法を使いたいと思う。これらのライブラリを使用せずにこのコードセグメントを書き直す方法はありますか?おそらく、XMLParserクラスを使用しますか?

答えて

1

廃止予定は、WebBrowserクラスです。この場合はBrowserComponentを直接使用することができますので、WebBrowserは冗長です。

このユースケースでは過去にXMLParserを使用しました。もともとはHTMLを表示するように設計されていたので、HTMLで動作するはずです。

JSoupをコードネーム1に移植することもできますが、私はその努力の範囲についてはわかりません。

実際にレンダリングされていないサイトでは、onLoadが呼び出されない可能性があります。そのため、デバイスで特に問題が発生したのは何ですか?

+0

onLoadが私の問題でした。私はXMLParserに切り替えました。すべてがうまくいきました。助けてくれてありがとう! –

関連する問題