完整的项目视频课程请识别下面的二维码进入我的B站:

本项目是基于鸿蒙的电子词典,支持使用本地词库和远程词库。本地词库使用SQLite数据库、远程词典使用爬虫获取的单词数据。爬虫使用JSoup库(基于Java语言)。欲知详情,请继续观看本课程的视频。

本课程以实战为宗旨,step by step来完整在线电子词典项目。例如,下面是异步搜索网络词库的源代码。

class AsyncSearchWord extends Thread {
    private String word;
    private RdbStore store;
    private SearchWordCallback callback;
    public AsyncSearchWord(String word, RdbStore store, SearchWordCallback callback) {
        this.word = word;
        this.store = store;
        this.callback = callback;
    }


    @Override
    public void run() {
        try {
            Document doc = Jsoup.connect("https://www.iciba.com/word?w=" +  word).get();
            Elements ulElements = doc.getElementsByClass("Mean_part__1RA2V");
            String insertSQL = "insert into t_words(word,type,meanings) values(?,?,?);";
            List<WordData> wordDataList = new ArrayList<>();
            for(Element ulElement: ulElements) {
                Elements liElements = ulElement.getElementsByTag("li");


                for(Element liElement:liElements) {
                    WordData wordData = new WordData();
                    Elements iElements = liElement.getElementsByTag("i");
                    for(Element iElement:iElements) {
                        wordData.type = iElement.text();
                        break;
                    }
                    Elements divElements = liElement.getElementsByTag("div");  // 得到词义
                    for(Element divElement:divElements) {
                        wordData.meanings = divElements.text();
                        break;
                    }
                    // 插入每一个词性的解释
                    wordDataList.add(wordData);
                    store.executeSql(insertSQL,new String[]{word, wordData.type,wordData.meanings});


                }


                break;
            }
            if(callback != null) {
                callback.onResult(wordDataList);
            }




        }
        catch (Exception e)
        {


        }
    }
}

从本地词库搜索单词的源代码:

public ArrayList<WordData> searchLocalDict(String word) {
    word = word.toLowerCase();
    String[] args = new String[]{word};
    ResultSet resultSet = store.querySql("select * from t_words where word = ?",args);


    ArrayList<WordData> result = new ArrayList<>();
    int i = 0;
    while(resultSet.goToNextRow())
    {
        WordData wordData = new WordData();
        wordData.type = resultSet.getString(2);
        wordData.meanings = resultSet.getString(3);
        result.add(wordData);


    }
    resultSet.close();
    return result;
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐