【发布时间】:2016-05-12 13:58:13
【问题描述】:
我在尝试反序列化 xml 文档时遇到以下异常。 Xml 文档有一个标签作为 url,其中可能存在 google 搜索链接。 Google 搜索链接包含 '=',在反序列化 xml 文档时它不被接受。我正在从服务器获取 xml。所以我不能对 url 标签中存在的字符串做任何事情。我必须在我的客户方面做点什么。我该如何克服这个问题?
<?xml version="1.0" encoding="UTF-8"?>
<response>
<status>
<code>000</code>
<message>Successfully completed</message>
</status>
<reports>
<report>
<id>9973</id>
<url>http://www.google.com/search?q=guns&client=safari&safe=active</url>
</report>
</reports>
</response>
例外:
System.Xml.XmlSerializer.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
内部异常:
{"'=' 是一个意外的标记。预期的标记是 ';'。第 136 行,位置 53。"}
【问题讨论】:
-
我们如何重现这个问题?
-
"我正在从服务器获取 xml。"什么服务器?听起来它只是无效的 XML,提供它的人应该修复它。
-
确实如此。检查在线 XML 验证器,您会发现它是无效的。
-
@Fresher:别那样做! (我们怎么会知道您正在这样做?)您已将有效的 XML 转换为非 XML。当您将结果传递给 XML 时,这显然不是一个好主意。
-
(不,问题不在于
=- 问题在于 XML 反序列化程序期望&后跟一个实体名称,而=不能是的一部分。所以是&真正导致了问题...只是它在=处注意到。)
标签: c# xmlserializer xml-deserialization