Jam*_*imm 11 c# xml xml-deserialization deserialization
我正在尝试将一些XML从Web服务反序列化为C#POCO.我已经将这个工作用于我需要的大多数属性,但是,我需要根据元素是否存在来设置bool属性,但似乎无法看到如何执行此操作?
一个示例XML片段:
<someThing test="true">
<someThingElse>1</someThingElse>
<target/>
</someThing>
Run Code Online (Sandbox Code Playgroud)
一个示例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; }
}
Run Code Online (Sandbox Code Playgroud)
这是我正在处理的实际XML和对象层次结构的一个非常简化的示例,但演示了我正在尝试实现的内容.
我读过的与反序列化null/empty元素相关的所有其他问题似乎都涉及到使用Nullable<T>,而这并不是我需要的.
有没有人有任何想法?
小智 13
一种方法是使用不同的属性来获取元素的值,然后使用Target属性来获取该元素是否存在.像这样.
[XmlElement("target", IsNullable = true)]
public string TempProperty { get; set; }
[XmlIgnore]
public bool Target
{
get
{
return this.TempProperty != null;
}
}
Run Code Online (Sandbox Code Playgroud)
即使存在空元素,TempProperty也不会为null,因此true如果<target />存在,Target将返回