问题描述
我需要将 XML 文件中的一些项目作为参数传递给 res.renderer() 函数(如下所示)。我目前可以使用此示例 XML 实现此目的:
示例.xml
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
</food>
<food>
<name>StrawBerry Belgian Waffles</name>
</food>
...使用此代码:
const parseString = require('xml2js').parseString;
const axios = require('axios');
let url = 'https://www.w3schools.com/xml/simple.xml';
app.get('/dynamic_view',function(req,res,next){
//GET THE XML URL
axios.get(url)
//PARSE THE XML FILE
.then(({ data }) => {
parseString(data,(err,{ breakfast_menu: { food } }) => {
if (err) return next(err)
let food_names = [];
//IteraTE OVER NAME VALUES OF FOODS,PUSH THEM TO AN ARRAY
food.map(({name}) => {
console.log(name);
food_names.push(name[0]);
});
//PASS THE ARRAY WITH VALUES TO res.renderer()
res.render('dynamic',{
names: food_names
});
});
})
})
但是,我无法从具有更多子元素的另一个 XML 中导航和传递值:
问题.xml
<RSS xmlns="https://url/RSS" version="5.0">
<channel>
<description>Main channel</description>
<link/>
<product>
<id>4bc1d0ac9276</id>
<description></description>
</product>
<product>
<id>4bc1d0ac9276</id>
<description></description>
</product>
</channel>
</RSS>
如何访问问题 XML 文件的“产品”元素,将它们推送到数组并将其传递给 res.renderer
,与包含 Sample.xml 文件的工作代码片段中显示的方式相同?我在使用 JS 浏览 Problem.xml 的 XML 结构时遇到问题。
为此苦苦挣扎了一段时间,感谢任何帮助!
解决方法
我是这样解决的:
parseString(data,(err,file) => {
if (err) return next(err)
title=file.rss.channel[0].item;