是否有可能将xml中的字符串值强制转换为bool?

时间:2010-03-24 13:07:42

标签: c# xml-serialization coercion

我们假设我有像这样的xml:

<Server Active="No">
    <Url>http://some.url</Url>
</Server>

C#类看起来像这样:

public class Server
{
   [XmlAttribute()]
   public string Active { get; set; }

   public string Url { get; set; }
}

是否可以将Active属性更改为bool类型并让XmlSerializer强制“是”“否”来布尔值?

编辑:收到Xml,我无法更改。所以,事实上,我只对反序列化感兴趣。

3 个答案:

答案 0 :(得分:3)

我可能会看第二个属性:

[XmlIgnore]
public bool Active { get; set; }

[XmlAttribute("Active"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public string ActiveString {
    get { return Active ? "Yes" : "No"; }
    set {
        switch(value) {
            case "Yes": Active = true; break;
            case "No": Active = false; break;
            default: throw new ArgumentOutOfRangeException();
        }
    }
}

答案 1 :(得分:2)

是的,您可以实现IXmlSerializable,您将可以控制xml的序列化和反序列化方式

答案 2 :(得分:0)

public class Server
{
   [XmlAttribute()]
   public bool Active { get; set; }

   public string Url { get; set; }
}

上一课应以该序列化形式结束:

<Server Active="false">
    <Url>http://some.url</Url>
</Server>