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

如何获取XML转JavaScript对象后enclosure标签内的url属性值

正确取值写法

你使用的XML转JS工具(大概率是xml2js)默认将XML节点属性收拢到$属性下,且同标签节点默认用数组包裹,按照你给出的结构,取值路径如下:

// 未将data赋值为item数组时的写法
const url = data.enclosure[0].$.url

// 结合你给出的index.js代码,你已经把data重新赋值为rss.channel[0].item(RSS条目数组),所以取某一条目下的url需要再加一层item索引:
// 示例:取第一条条目的enclosure的url
const url = data[0].enclosure[0].$.url

错误写法原因说明

  • data['enclosure'][0]['url']:缺少属性容器层$,所有XML节点属性都在$对象下,不是直接挂在节点对象上
  • data['enclosure']['@url']:这是Python部分XML解析库的属性访问规则,当前你用的JS解析库规则不同
  • data['enclosure']['$url']:$是独立的属性容器对象,不是属性名前缀,不能直接拼接在属性名前

其他注意事项

  1. 你当前的代码逻辑顺序有问题:你先对data做了取值赋值,才判断err是否存在,如果请求/解析出错,data是null,会直接抛出异常,建议调整顺序:
app.get('/', (req, res) => {
 getJson.produce_data(url_source.url, function (err, data) {
   // 先判断错误
   if (err) {
     return console.error(err);
   }
   // 再处理数据
   const itemList = data["rss"]["channel"][0]["item"];
   res.render('json_results', {title: 'NEWS TODAY', data_in: itemList});
 });
});
  1. 如果你在回调外打印data返回undefined是正常现象,produce_data是异步函数,回调执行前外部的data还没被赋值。

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:36:04