1

我在开发我的 Codename One 应用程序时遇到了障碍。我项目中的一个类从网站解析 3 个特定的 html“td”元素,并将文本保存到字符串中,然后我将文本数据输入到 Codename One 多按钮中。我最初使用 jSoup 进行此操作,但很快意识到 Codename One 不支持 3rd 方 jar 文件,因此我使用了这种方法,如下所示。

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");
}

此方法在模拟器中有效(并给出“depreciated API”警告),但当我在签名后在线提交构建时不会运行。我已经导入了 parse4cn1 和 cn1JSON 库并经历了一系列的障碍,但我在提交时仍然收到构建错误。如果存在,我想重新开始并使用另一种方法。有没有一种方法可以重写这段代码而不必使用这些库?也许通过使用 XMLParser 类?

4

1 回答 1

1

弃用是针对WebBrowser班级的。你可以BrowserComponent直接使用,所以WebBrowser在这种情况下是多余的。

我过去曾XMLParser用于此用例。它应该与 HTML 一起使用,因为它最初是为显示 HTML 而设计的。

也可以将 JSoup 移植到 Codename One,尽管我不确定所涉及的工作范围。

很可能不会为您实际上没有看到呈现的站点调用 onLoad,所以问题是设备上具体失败的原因是什么?

于 2017-06-23T04:49:15.910 回答