gpt4 book ai didi

c# - XML反序列化失败

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:35 25 4
gpt4 key购买 nike

我正在反序列化以下 XML 文件。在 VSTS 2008 + C# + .Net 3.5 中使用 XML 序列化程序。

这是 XML 文件。

<?xml version="1.0" encoding="utf-8"?>
<Person><Name>=b?olu</Name></Person>

这是显示 XML 文件和 XML 文件的二进制格式的屏幕快照,

alt text

alt text

如果有一些解决方案可以接受这样的字符,那就太好了!由于我的XML文件很大,如果这些字符确实无效,应该被过滤掉,我想在反序列化后保留XML文件的剩余内容。

目前 XML 反序列化失败并出现 InvalidOperationException,整个 XML 文件信息将丢失。

实际上,在VSTS中打开这个XML文件时,出现这样的错误,Error 1 Character '?', hexadecimal value 0xffff is illegal in XML documents。我很困惑,因为在二进制形式中,没有 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://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 文件的编码...?

关于c# - XML反序列化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com