【发布时间】:2013-07-04 12:12:11
【问题描述】:
我正在尝试将 xml 反序列化为一个类,但它给了我一个例外。
我的课是这样的:
public class FieldsVO
{
public bool AllowPrint { get; set; }
public bool AllowAbort { get; set; }
public bool AllowPrintFSFSDA { get; set; }
}
还有我的 XML:
<fields>
<AllowPrint>True</AllowPrint>
<AllowAbort>True</AllowAbort>
<AllowPrintFSFSDA>True</AllowPrintFSFSDA>
</fields>
反序列化工作的唯一方法是属性是“字符串”。 有什么办法可以用注解之类的吗?
这是反序列化代码:
public static object Deserialize(string xml, Type objType)
{
if (false == xml.StartsWith("<"))
{
int pos = xml.IndexOf('<');
xml = xml.Remove(0, pos);
}
XmlSerializer serializer = new XmlSerializer(objType);
XmlReaderSettings set = new XmlReaderSettings();
set.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes;
using (XmlReader reader = XmlReader.Create(new StringReader(xml), set))
return serializer.Deserialize(reader);
}
【问题讨论】:
-
贴出实际的(反)序列化代码。
-
@HenkHolterman 刚刚添加了代码。
-
叹息。现在请提供序列化代码。他们必须匹配。 XmlSerializer 写入
true,而不是True。 -
是的,真正的问题是。我没有创建 XML,我只是从客户的数据库中使用它。
标签: c# xml xml-deserialization