在使用Firefox浏览器测试我编写的xml文件时,遇到如下错误:
我的xml源代码如下:

<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://s.faydo.com/?q=%BB%FA%C6%B1&mb=bt</loc> <lastmod>2012-06-26T17:35:23+08:00</lastmod> <changefreq>daily</changefreq> <priority>1.0</priority> </url> </urlset>

Firefox浏览器提示的错误如下:

XML解析错误:未组织好  位置:http://s.faydo.com/err.xml  行:4,列:42: <loc>http://s.faydo.com/?q=%BB%FA%C6%B1&m=m.htm</loc> -----------------------------------------^

谷歌Chrome浏览器提示的错误如下:

This page contains the following errors: error on line 4 at column 42: EntityRef: expecting ';' Below is a rendering of the page up to the first error.

分析问题
Firefox浏览器、谷歌Chrome浏览器以及大多数浏览器在显示xml文件时,显示的并不是文件源码,而是经过“xml解析器”解析后的结果。但是,“xml解析器”在遇到字符“&”时,会把“&”当做一个实体引用的开始,而去寻找这个实体引用的结束符号“;”,本文上面遇到的就是这个问题。
在xml文档中,像“&”这样的预定义的实体引用一共有5个,分别是“&”、“<”、“>”、“'”、“"”。
解决方法一:
把实体引用编码后使用,即
把“&” 编码为 “&amp;” 
把“<” 编码为“&lt;” 
把“>” 编码为 “&gt;” 
把“'” 编码为 “&apos;” 
把“"” 编码为 “&quot;” 
针对本文上面的问题,即把原来代码中的:

<loc>http://s.faydo.com/?q=%BB%FA%C6%B1&mb=bt</loc>

替换为:

<loc>http://s.faydo.com/?q=%BB%FA%C6%B1&amp;mb=bt</loc>

解决方法二:
在标记CDATA中,所有的标记、实体引用都被忽略,而被“xml解析器”一视同仁地当做原始字符数据看待,CDATA的形式如下:<![CDATA[文本内容]]>
针对本文上面的问题,即把原来代码中的:

<loc>http://s.faydo.com/?q=%BB%FA%C6%B1&mb=bt</loc>

替换为:

<loc><![CDATA[http://s.faydo.com/?q=%BB%FA%C6%B1&mb=bt]]></loc>

使用CDATA需要注意的两点,一:由于CDATA的结束符号是“]]>”,所以CDATA中不能包含“]]>”,二:由于CDATA中的所有标记、实体引用都被忽略,所以CDATA不能嵌套使用。

XML输出到浏览器报错的更多相关文章

  1. Windows 7上打开IE浏览器报错:无法启动此程序,因为计算机中丢失api-ms-win-core-path-|1-1-0.dll。尝试重新安装该程序以解决此问题。

    Windows 7上打开IE浏览器报错: 1. 重新安装IE11也没有解决该问题 2. 在其他Win7电脑也搜索不到该文件,但是能使用IE浏览器. 3. 从网上找了一个dll文件,注册时提示如下图

  2. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.

    问题:Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin. 原因:.js文件中使用load()方法,而Chrom ...

  3. springboot项目的maven的pom.xml文件第一行报错 Unknown Error

    springboot项目的maven的pom.xml文件第一行报错 Unknown Error https://blog.csdn.net/mini_jike/article/details/9239 ...

  4. python脚本中selenium启动浏览器报错os.path.basename(self.path), self.start_error_message) selenium.common.excep

    在python脚本中,使用selenium启动浏览器报错,原因是未安装浏览器驱动,报错内容如下: # -*- coding:utf-8 -*-from selenium import webdrive ...

  5. webdriver驱动火狐浏览器报错:Unable to find a matching set of capabilities

    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.SessionNotCreatedExcept ...

  6. C#生成、解析xml文件以及处理报错原因

    转载自:http://blog.csdn.net/lilinoscar/article/details/21027319 简单的介绍一下生成XML文件以及解析,因为有些数据不一定放到数据库,减少链接数 ...

  7. selenium启动IE浏览器报错:Unexpected error launching Internet Explorer. Browser zoom level was set to

    解决此问题的方法就是查看自己的浏览器是否没有放大至100%,如下 如果不是100%就会报错

  8. 解决selenium 启动ie浏览器报错:Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones

    启动ie代码: System.setProperty("webdriver.ie.driver", "bin/IEDriverServer.exe"); Web ...

  9. AXIS-web.xml里配置axis报错addChild: Child name 'AxisServlet' is not unique 解决办法

    报错这个那么就表示,web.xml中有相同的AxisServlet的这个名字,可以把原来的删除配置自己的,也可以保留原来的,自己的不配置 Ctrl+f 搜索下就知道了

随机推荐

  1. sql之group by的用法

    1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简 ...

  2. 将vue-cli 2.x的项目升级到3.x

    尝试将vue-cli 2.x的项目升级到3.x,记录一下升级过程,和遇到的坑 1. 直接复制替换src文件夹 2. 安装项目需要的依赖 (可以将原来package.json dependencies下 ...

  3. 【Good Bye 2017 B】 New Year and Buggy Bot

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举一下全排列.看看有多少种可以到达终点即可. [代码] #include <bits/stdc++.h> using ...

  4. 常见c#正则表达式类学习整理

    1.MatchCollection类 用于输入字符串所找到的成功匹配的集合,Regex.Matches 方法返回 MatchCollection 对象 用法 //str:要搜索匹配项的字符串 patt ...

  5. 有关 Lambda && linq练习 有待整理

    1. 查询Student表中的所有记录的Sname.Ssex和Class列.(select sname,ssex,class from student) Students.Select(s=> ...

  6. 整理wmic使用,不重启变环境变量 .

    整理wmic使用,不重启变环境变量 . 利用wmic修改是直接生效的:(e:\tools 是新添加的目录) wmic ENVIRONMENT where "name='path' and u ...

  7. 11.typeid

    #include <iostream> using namespace std; void main() { int a; cout << typeid(a).name() & ...

  8. Spark SQL概念学习系列之Spark SQL基本原理

    Spark SQL基本原理 1.Spark SQL模块划分 2.Spark SQL架构--catalyst设计图 3.Spark SQL运行架构 4.Hive兼容性 1.Spark SQL模块划分 S ...

  9. JVM route

    http://www.linuxidc.com/Linux/2013-06/86446.htm

  10. LeetCode_Construct Binary Tree from Preorder and Inorder Traversal

    一.题目 Construct Binary Tree from Preorder and Inorder Traversal My Submissions Given preorder and ino ...