我正在尝试验证我正在制作的RSS Feed的格式。生成的XML如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="https://foo.bar.net/rss.php" rel="self" type="application/rss+xml" />
<title>foo.bar Latest News</title>
<link>https://foo.bar.net/</link>
<description>Latest news and information of interest at foo.bar</description>
<pubDate>Thu, 08 Dec 2011 00:08:09 -0500</pubDate>
<item>
<title>some title</title>
<link>https://foo.bar.net/</link>
<description>some description.</description>
<pubDate>Wed, 07 Dec 2011 23:04:42 -0500</pubDate>
<guid>https://foo.bar.net/rss.php?itemId=1</guid>
</item>
</channel>
</rss>
如果我从此页面获取文本并将其从此处复制到http://validator.w3.org/feed/check.cgi的w3c验证器中,则验证。如果我从浏览器源复制相同的文本,我会收到错误:
Sorry
This feed does not validate.
line 2, column 0: XML parsing error: <unknown>:2:0: XML or text declaration not at start of entity [help]
<?xml version="1.0" encoding="UTF-8"?>
如果我再次点击验证按钮(此时没有剪切或粘贴,只是文本窗口中已有的内容),我得到:
Congratulations!
This is a valid RSS feed.
说什么?我的RSS阅读器也不会将其识别为有效的Feed,并且似乎存在绝对差异。到底发生了什么事?
...是的,我点击了“帮助”链接。它说我的Feed根据XML规范没有很好地形成。在xml工作了很长一段时间后,我没有看到任何跳出来的东西。这可能是一些奇怪的编码问题,如果是这样,我该怎么解决呢?
答案 0 :(得分:1)
在我看来,当你将XML片段粘贴到验证器中时,你在XML声明前面留下了一些空格 - 它抱怨XML声明在第2行。
(也许一个更好的设计可能是验证服务在开始解析之前剥离任何前导空格......)