gpt4 book ai didi

C# xml序列化必填字段

转载 作者:数据小太阳 更新时间:2023-10-29 02:21:56 28 4
gpt4 key购买 nike

我需要将一些字段标记为需要写入 XML 文件,但没有成功。我有一个包含 ~30 个属性的配置类,这就是为什么我不能像这样封装所有属性

    public string SomeProp
{
get { return _someProp; }
set
{
if (_someProp == null)
throw new ArgumentNullException("value");
_someProp = value;
}
}

null 是来自代码的有效值,但不是来自 XML。我正在尝试使用 XmlAttribute,但它并没有像我预期的那样产生影响(反序列化时出现 IOException)。

例如这段代码:

    [XmlElement(IsNullable = true)]
public String Name { get; set; }

[XmlElement(IsNullable = true)]
public String Description { get; set; }

在缺少 NameDescription 标签时非常有效。


澄清:

类:

public class MyClass
{
[XmlElement(IsNullable = true)]
public String Name { get; set; }

[XmlElement(IsNullable = true)]
public String Description { get; set; }
}

XML:

<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>hello</Name>
</MyClass>

代码:

MyClass deserialize = (MyClass)new XmlSerializer(my.GetType()).Deserialize(new FileStream("result.xml", FileMode.Open));
Console.WriteLine(deserialize.Name);
Console.WriteLine(deserialize.Description);

结果:反序列化成功,Description为null

预期:异常,未找到描述标签。

最佳答案

是否必须使用 XmlSerializerDataContractSerializer 提供以下选项:

[DataMember(IsRequired = true)]

关于C# xml序列化必填字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24239500/

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