javascript - rss 格式不正确(无效令牌) - ReactJS
问题描述
XML parsing error: <unknown>:16:32: not well-formed (invalid token) [help]
<itunes:category text="Society & Culture">
我不知道如何解决这个错误。您会看到我将所有节目都存储在 mongodb 中,并且类别由 Apple 设置,我们需要进入的类别是社会与文化——因为它们似乎不仅仅是娱乐类别。
我想知道如何让这行代码在显示 & simple 时不被填满。
'\n<itunes:category text="'+show.category+'">';
完整代码
router.get('/shows/:id', (req, res) => {
var url = req.params.id;
/*var obj = {
items: [{
name: url,
_id: 1
}, {
name: 'two',
_id: 2
}, {
name: 'three',
_id: 3
}],
blah: 'http://www.google.com',
when: new Date(),
boolz: true,
nullz: null
};
console.log(serializer.render(obj));*/
var ep ='';
var query = {};
var epi='';
query['url']=url;
console.log(url);
ShowModel.findOne(query).exec(function(err, show) {
if (!err){
var q = {}
q['show_id']=show._id;
EpisodeModel.find(q).sort('-pubDate').exec(function(er, a) {
if (!er){
// console.log(a);
/*{a.map(a => (
ep += '\n<item>'+
'\n<title>'+a.title+'</title>'+
'\n<itunes:summary>'+a.summary+'</itunes:summary>'+
'\n<description>'+a.description+'</description>'+
'\n<link>'+a.link+'</link>'+
'\n<enclosure url="'+a.enclosureurl+'" type="audio/mpeg"></enclosure>'+
'\n<pubDate>Thu, 21 Dec 2016 16:01:07 +0000</pubDate>'+
'\n<itunes:author>Author Name</itunes:author>'+
'\n<itunes:duration>00:32:16</itunes:duration>'+
'\n<itunes:explicit>no</itunes:explicit>'+
'\n<guid>http://example.com/podcast-1</guid>'+
'\n</item>'
))}*/
for(var k in a) {
// console.log(a[k].title);
ep+= '\n<item>'+
'\n<title>'+a[k].title+'</title>'+
'\n<itunes:summary>'+a[k].summary+'</itunes:summary>'+
'\n<description>'+a[k].description+'</description>'+
'\n<link>'+a[k].link+'</link>'+
'\n<enclosure url="https://dts.podtrac.com/redirect.mp3/'+a[k].enclosureurl+'" length="'+a[k].enclosurebyts+'" type="audio/mpeg"></enclosure>'+
'\n<pubDate>'+sdate(a[k].pubDate)+'</pubDate>'+
'\n<itunes:author>'+a[k].author+'</itunes:author>'+
'\n<itunes:episodeType>full</itunes:episodeType>'+
'\n<itunes:season>'+a[k].season+'</itunes:season>';
if(a[k].episode_no) ep+='\n<itunes:episode>'+a[k].episode_no+'</itunes:episode>';
ep+='\n<itunes:duration>'+a[k].duration+'</itunes:duration>'+
'\n<itunes:explicit>'+a[k].explicit+'</itunes:explicit>'+
'\n<guid>'+a[k].link+'</guid>'+
'\n</item>'
}
}else{throw er;}
// console.log(ep);
if(show.subcategory){var subcategory = '<itunes:category text="'+show.subcategory+'"/>';}
var feed = '<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0">'+
'\n<channel>'+
'\n<title>'+show.title+'</title>'+
'\n<link>'+show.link+'</link>'+
'\n<language>en-us</language>'+
'\n<itunes:subtitle>'+show.subtitle+'</itunes:subtitle>'+
'\n<itunes:author>Radio Media PTY LTD</itunes:author>'+
'\n<itunes:summary>'+show.summary+'</itunes:summary>'+
'\n<description>'+show.description+'</description>'+
'\n<itunes:owner>'+
'\n<itunes:name>Radio Media PTY LTD</itunes:name>'+
'\n<itunes:email>podcast@radiomedia.com.au</itunes:email>'+
'\n</itunes:owner>'+
'\n<itunes:explicit>'+show.explicit+'</itunes:explicit>'+
'\n<itunes:image href="'+show.icon+'" />'+
'\n<itunes:category text="'+show.category+'">';
if(subcategory) feed += subcategory;
feed +='\n</itunes:category>'+
'\n<atom:link href="http://api.radiomedia.com.au/api-access/shows/'+url+'" rel="self" type="application/rss+xml" />';
feed += ep;
feed += '\n</channel>'+
'\n</rss>';
console.log(ep);
res.header('Content-Type', 'text/xml');
res.send(feed);
//process.exit();
}); } else { throw err; }
});
解决方案
来自XML 定义:
& 符号 (&) 和左尖括号 (<) 不得以其文字形式出现,除非用作标记分隔符,或者在注释、处理指令或 CDATA 部分中。如果其他地方需要它们,则必须将它们转义。
推荐阅读
- python - PYOMO 优化以满足供给 < 需求
- python - 为什么 tkinter 不抛出/引发异常?
- python - Python Zipline 离线测试
- c# - OAuth 资源服务器,验证令牌并返回端点授权范围
- javascript - 无法在mounted() 中调用函数
- ios - Nativescript+Angular 上的 ListView 只占了竖屏的一半。使用 iPhone 模拟器
- python - 安装 Tornado 4.5.3 后如何恢复我的 Python 3.6?
- python - 如何使用 peewee 设置或选择 postgres 的 current_settings?
- c++ - 我的 object::collides(object * o) 函数总是返回 true,但什么也不做
- javascript - 内部 Chromium postMessage 事件