You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何编写异步函数根据ID获取XML元素?

解决根据ID获取KML中单个图书馆元素的问题

你当前代码存在两个核心问题,导致无法正确根据ID获取目标元素:

  1. getLibraryById函数硬编码了固定IDLIB02,没有使用传入的参数
  2. 路由调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:22:14