无法通过 JS 获取 XML 文件值
Trouble getting XML file values w/ JS
我需要从 XML 文件中传递一些项目,作为 res.renderer() 函数的参数(如下所示)。我目前可以使用此示例 XML:
实现此目的
Sample.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 导航和传递值:
Problem.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 文件的 'product' 元素,将它们推送到数组并将其传递给 res.renderer
,与工作代码中所示的方式相同带有 Sample.xml 文件的片段?我在使用 JS 浏览 Problem.xml 的 XML 结构时遇到问题。
为此苦苦挣扎了一段时间,非常感谢您的帮助!
我是这样解决的:
parseString(data, (err, file) => {
if (err) return next(err)
title=file.rss.channel[0].item;
我需要从 XML 文件中传递一些项目,作为 res.renderer() 函数的参数(如下所示)。我目前可以使用此示例 XML:
实现此目的Sample.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 导航和传递值:
Problem.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 文件的 'product' 元素,将它们推送到数组并将其传递给 res.renderer
,与工作代码中所示的方式相同带有 Sample.xml 文件的片段?我在使用 JS 浏览 Problem.xml 的 XML 结构时遇到问题。
为此苦苦挣扎了一段时间,非常感谢您的帮助!
我是这样解决的:
parseString(data, (err, file) => {
if (err) return next(err)
title=file.rss.channel[0].item;