A CLI-Based EE Dictionary Supported by API of "Merriam-Webster‘s Collegiate® Dictionary with Audio"
(一款基于命令行的英英词典, 由<韦氏®大词典(综合版)>API提供支持)
GitHub项目地址: https://github.com/hwding/seekDict
如果有疑问及建议请在该repository页面的issues中提出!
准备工作:
- 在韦氏大辞典开发者网站申请一个API
- 了解Java对XML文件的解析
- 了解Java对文件的读写(用于存储Cache文件)
程序流程:
COND1: 传入单词或词组 -> 本地是否已有缓存文件? -> 否 -> 拼接请求URL -> 提交 -> 取得返回XML -> 保存在本地 -> 开始解析XML文件
-> 是否为有效查询? -> 是 -> 打印结果
-> 否 -> 是否有建议单词或词组? -> 是 -> 提示查无此词并打印建议 -> 删除本地缓存文件
-> 否 -> 提示查无此词 -> 删除本地缓存文件
COND2: 传入单词或词组 -> 本地是否已有缓存文件? -> 是 -> 开始解析XML文件 -> 打印结果
可以看出将查询有效的结果缓存在本地可以极大程度的简化重复查询的流程, 以提高效率.
难点:
- 返回的XML层次极为复杂, 需要逐级拆解以提取有效信息
- 不同层次信息的组织与显示
注意事项:
1 File file = new File(CACHE_PATH, string + ".tmp"); 2 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 3 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 4 Document document = documentBuilder.parse(file); 5 Element rootElement = document.getDocumentElement(); 6 NodeList content = rootElement.getChildNodes();
首先读出请求之后缓存在本地的结果文件, 将其解析为Document类, 再使用DOM方法去解析XML中的节点信息
逐层解析后, 将收集到的信息根据XML中的结点层次有序的反馈在CLI中
(具体实现请见见项目地址中的源码, 注释会陆续补充)
截图:
帮助信息(正在完善中)
有效查询结果
无效查询结果并提供拼写建议
时间: 2024-10-09 03:50:58