【发布时间】:2026-01-26 17:50:01
【问题描述】:
我知道,我知道有关无法反序列化 XML 并出现错误“XML 文档 (2, 2) 中有错误”的问题。网上到处都是乱七八糟的,但我还是很难过。
我有一个使用 C# 类中的 XmlSerializer 创建的 XML 文档。此文档无法反序列化并出现异常:
There is an error in XML document (2, 2).
Inner Exception: The server could not be contacted.
Root inner exception: The LDAP server is unavailable.
我正在使用 XmlSerializer 进行序列化和反序列化,奇怪的是,有问题的 XML 文档可以在另一台计算机上使用相同的代码进行反序列化。
我使用以下代码序列化和反序列化我在 C# 中生成的类:
public static T DeserializeObject<T>(string filename)
{
Console.WriteLine("Reading with XmlReader");
// Create an instance of the XmlSerializer specifying type and namespace.
XmlSerializer serializer = new
XmlSerializer(typeof(T));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
xml.XmlReader reader = xml.XmlReader.Create(fs);
// Declare an object variable of the type to be deserialized.
T i;
// Use the Deserialize method to restore the object's state.
i = (T)serializer.Deserialize(reader);
fs.Close();
return i;
}
public static void WriteObject<T>(T value, string filename)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
TextWriter tw = new StreamWriter(filename);
serializer.Serialize(tw, value);
tw.Close();
}
XML 文档本地存储在: C:\Users\用户名\AppData\Local\myapp\myxmldoc.xml
并遵循以下格式:
<?xml version="1.0" encoding="utf-8"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id xsi:nil="true" />
<Property1>text</Property1>
<Property2>0000000</Property2>
<Property3>
<Property31>
<Property311>text</Property311>
<Property312>text</Property312>
</Property31>
</Property3>
<Property4 />
<Property5>false</Property5>
</MyClass>
我使用以下代码进行反序列化:
myclassvar = SerialiseXML.DeserializeObject<MyClass>(xmldocpath);
其他类在有问题的计算机上可以序列化和反序列化 XML。
哦,顺便说一句,我通过验证器运行了代码,没有发现任何错误。
有什么想法吗?
【问题讨论】:
-
我认为“LDAP 服务器不可用。”
-
另外,您的 Stream、XmlReader 和 TextWriter 上缺少
using块。 -
在使用 XML 文档时,发生了一个完全不相关的错误。 XML 内容恰好位于处理和报告错误的调用堆栈的顶部。
标签: c# xml xmlserializer