前言

今天在查看网站地图 sitemap.xml 时,发现有如下错误提示:

1
2
3
This page contains the following errors: 
error on line 176 at column 147: EntityRef: expecting ';'
Below is a rendering of the page up to the first error.

原因

大多数浏览器在显示xml文件时,显示的并不是文件源码,而是经过 xml解析器 解析后的结果。

但是, xml解析器 在遇到字符 & 时,会把 & 当做一个实体引用的开始,而去寻找这个实体引用的结束符号 ; ,我这边遇到的就是这个问题,文件名称含有 & 字符。

解决方法

将文件名称中的 & 改为其他即可,类似 and&这些。

再次访问,可以看到问题解决:

延伸

xml 文档中,像 & 这样的预定义的实体引用一共有5个,分别是 &<>'"

把实体引用转义后使用,即

实体引用 转义后
& &amp;
< &lt;
> &gt;
' &apos;
" &quot;

参考文章:
XML error on line at column: EntityRef: expecting ‘;’