在C#中反序列化XML元素存在bool
发布时间:2020-12-15 04:35:08 所属栏目:百科 来源:网络整理
导读:我正在尝试将Web服务中的一些 XML反序列化为C#POCO.我已经有这个工作,我需要的大部分属性,但是,我需要设置一个bool属性,基于一个元素是否存在,但似乎看不到如何做到这一点? 示例XML片段: someThing test="true" someThingElse1/someThingElse target//some
我正在尝试将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和对象层次结构的一个非常简化的示例,但是演示了我要实现的内容. 我读过的与反序列化空/空元素相关的所有其他问题似乎都涉及使用Nullable< T>,这不会做我所需要的. 有没有人有任何想法? 解决方法
一种方法是使用不同的属性来获取元素的值,然后使用Target属性来获取该元素是否存在.像这样
[XmlElement("target",IsNullable = true)] public string TempProperty { get; set; } [XmlIgnore] public bool Target { get { return this.TempProperty != null; } } 即使存在一个空的元素,TempProperty也不会为空,所以如果< target />存在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |