【发布时间】:2021-07-13 08:53:27
【问题描述】:
我需要将 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,与工作代码 sn-p w/ Sample.xml 文件中显示的方式相同?我在使用 JS 导航 Problem.xml 的 XML 结构时遇到问题。
为此苦苦挣扎了一段时间,感谢任何帮助!
【问题讨论】:
-
你可以探索npm包npmjs.com/package/xml2js
-
@PrakashS 我有,但仍然无法解决这个问题。我尝试用
parseString(data, (err, { rss.channel[0]: { product } }) => {替换parseString(data, (err, { breakfast_menu: { food } }) => {,但我得到SyntaxError unexpected '.' after rss -
@PrakashS 为什么我无法访问 rss.channel[0]: { product } 与 { Breakfast_menu: { food } 一样?:
-
请创建一个最小的示例,我们可以帮助您弄清楚
标签: javascript xml express axios xml2js