Node.js中如何编写异步函数根据ID获取XML元素?
解决根据ID获取KML中单个图书馆元素的问题
你当前代码存在两个核心问题,导致无法正确根据ID获取目标元素:
getLibraryById函数硬编码了固定IDLIB02,没有使用传入的参数- 路由调用
getLibraryById时,没有传递URL中的id参数
修改后的libraries.js中getLibraryById函数
async function getLibraryById(id) { const xml = await loadLibraries(); // 通过属性选择器匹配指定ID的Placemark元素 return xml.querySelector(`Placemark[id="${id}"]`); }
修改后的路由代码
app.get("/library/:id", async (request, response) => { // 从URL参数中提取id并传入函数 let libraryInfo = await libraries.getLibraryById(request.params.id); // 如果需要在控制台输出XML格式的内容,可添加以下代码 if (libraryInfo) { console.log(new XMLSerializer().serializeToString(libraryInfo)); } else { console.log("未找到对应ID的图书馆"); } response.render("library", { title: "Library", library: libraryInfo }); });
说明
- 函数改为接收
id参数,实现动态查询不同ID的图书馆元素 - 使用
querySelector的属性选择器Placemark[id="${id}"],比getElementById更适配带命名空间的KML文档,避免命名空间导致的查询失效问题 - 路由中通过
request.params.id获取URL路径中的ID参数,确保传递正确的查询条件
内容的提问来源于stack exchange,提问作者wingck
相关产品推荐
相关产品推荐

