我遇到了开发我的Codename One应用程序的障碍。我项目中的一个课程解析了3个特定的html" td"来自网站的元素并将文本保存到字符串,然后我将该文本数据输入到Codename One多按钮中。我最初使用jSoup进行此操作但很快意识到Codename One不支持第三方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");
}
此方法适用于模拟器(并提供"折旧API"警告),但在签名后在线提交构建时不会运行。我已经导入了parse4cn1和cn1JSON库并且遇到了一系列障碍,但是当我提交时仍然会收到构建错误。我想重新开始并使用替代方法(如果存在)。有没有办法可以重写这段代码而不必使用这些库?也许通过使用XMLParser类?
答案 0 :(得分:1)
弃用是针对WebBrowser
类的。您可以直接使用BrowserComponent
,因此WebBrowser
在这种情况下是多余的。
我过去曾使用XMLParser
作为此用例。它应该与HTML一起使用,因为它最初设计用于显示HTML。
也可以将JSoup移植到Codename One,尽管我不确定所涉及的工作范围。
很可能没有为你实际上没有看到渲染的网站调用onLoad,所以问题是设备上特别失败的是什么?