gpt4 book ai didi

c# - 将 XML 元素存在反序列化为 C# 中的 bool

转载 作者:可可西里 更新时间:2023-11-01 08:43:04 25 4
gpt4 key购买 nike

我正在尝试将 Web 服务中的一些 XML 反序列化为 C# POCO。我已经为我需要的大多数属性工作了,但是,我需要根据元素是否存在来设置 bool 属性,但似乎看不到如何做到这一点?

示例 XML 片段:

<someThing test="true">
<someThingElse>1</someThingElse>
<target/>
</someThing>

C# 类示例:

[Serializable, XmlRoot("someThing")]
public class Something
{
[XmlAttribute("test")]
public bool Test { get; set; }

[XmlElement("someThingElse")]
public int Else { get; set; }

/// <summary>
/// <c>true</c> if target element is present,
/// otherwise, <c>false</c>.
/// </summary>
[XmlElement("target")]
public bool Target { get; set; }
}

这是我正在处理的实际 XML 和对象层次结构的一个非常简化的示例,但演示了我正在努力实现的目标。

我读过的所有其他与反序列化 null/空元素相关的问题似乎都涉及使用 Nullable<T> ,这不符合我的需要。

有没有人有什么想法?

最佳答案

一种方法是使用不同的属性获取元素的值,然后使用 Target 属性获取该元素是否存在。就像这样。

[XmlElement("target", IsNullable = true)]
public string TempProperty { get; set; }

[XmlIgnore]
public bool Target
{
get
{
return this.TempProperty != null;
}
}

即使存在空元素,TempProperty 也不会为 null,因此 Target 将返回 true如果<target />存在

关于c# - 将 XML 元素存在反序列化为 C# 中的 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602320/

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