我正在反序列化以下 XML 文件。使用 XML 序列化器与 VSTS 2008 + C# + .Net 3.5。
这是 XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<Person><Name>=b?olu</Name></Person>
这是显示 XML 文件和 XML 文件的二进制格式的屏幕快照,
如果有一些解决方案来接受这些字符,那就太好了!由于我的XML文件很大,如果这些字符确实无效并且应该过滤掉,我想在反序列化后保留XML文件的剩余内容。
目前,XML 反序列化失败并出现 InvalidOperationException,并且整个 XML 文件信息将丢失。
实际上,当在VSTS中打开这个XML文件时,会出现这样的错误,错误1字符'?',十六进制值0xffff在XML文档中是非法的。我很困惑,因为在二进制形式中,没有 0xffff 值。
有什么解决方案或想法吗?
EDIT1:这是我的代码,用于反序列化 XML 文件,
static void Foo()
{
XmlSerializer s = new XmlSerializer(typeof(Person));
StreamReader file = new StreamReader("bug.xml");
s.Deserialize(file);
}
public class Person
{
public string Name;
}
这种风格有帮助吗?
<name>
<![CDATA[
=b?olu
]]>
</name>
要么那个或者encoding http://en.wikipedia.org/wiki/Character_encodings_in_HTML应该可以解决问题。
编辑:找到此页面:http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp。具体来说,这段反序列化代码:
public Object DeserializeObject(String pXmlizedString)
{
XmlSerializer xs = new XmlSerializer(typeof(Automobile));
MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(memoryStream);
}
关于“StringToUTF8ByteArray”和“Encoding.UTF8”的部分看起来很奇怪,你的部分没有。我猜 .NET 不喜欢读取实际 XML 文件的编码...?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)