【发布时间】:2013-09-12 12:47:02
【问题描述】:
我正在尝试将一个 XML 文件序列化为一个对象,当删除一个 XML 标记时,我期待一个异常,因为我的 XML 文件不再有效,但我仍然得到带有已删除标记的数据对象(属性) 一片空白。如何使这个特定的标签成为必需的,所以在尝试序列化它时,它会抛出一个异常,说标签 xxx is missing => XML file is not valid => 所以数据对象也是空的。
我的 XSD
...
<xs:element name="Language" minOccurs="1" maxOccurs="1">
...
我的 XML
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<item>
<sub1>1037</sub1>
<Language>F</Language><!-- If I delete this tag, my XML file should be invalid -->
<sub1>ZDC</sub1>
</item>
<root>
我的序列化项目
...
/// <remarks/>
public string Language
{
get
{
return this.languageField;
}
set
{
this.languageField = value;
}
}
...
【问题讨论】:
-
为什么不在序列化之前验证自己?
-
我已经使用 XSD 文件使用 xsd.exe 生成了我的序列化对象,我认为 minOccurs="1" maxOccurs="1" 可以使我的标签成为必需,但事实并非如此!如何使我的属性“语言”需要使用属性或类似的东西?
-
@Stacked 这是 xsd.exe 忽略的一部分,而
xs:pattern或 xsd 包括,基本上当涉及到验证内容而不是 xml 文件的结构时,您将几乎拥有序列化时自己做
标签: c# xml serialization