[英]How to customize the xml using xmlserializer in C#?
我有以下课程:
public class DisplayFunction
{
[System.Xml.Serialization.XmlAttribute()]
public byte[] Color
{
get;
set;
}
[System.Xml.Serialization.XmlAttribute()]
public FunctionShape Shape
{
get;
set;
}
[System.Xml.Serialization.XmlAttribute()]
public int Id
{
get;
set;
}
}
我正在使用xml序列化器并得到结果:
<DisplayFunctions Color="et57hQ==" Shape="Bar" Id="514" />
而我希望结果是:
<DisplayFunctions Color="122,222,123,133" Shape="Bar" Id="514" />
我怎么能得到那个结果?
XML序列化程序正在使用字节数组序列化Color。 所以结果很奇怪。
我的建议是使用string
类型的公共属性来序列化颜色,然后使用转换将颜色转换为字符串,反之亦然。
string HtmlColor = System.Drawing.ColorTranslator.ToHtml(MyColorInstance);
string HtmlColor = System.Drawing.ColorTranslator.ToHtml(MyColorInstance);
因此,您需要以下内容:
Color mColor;
[XmlIgnore]
public Color Color
{
get { return mColor; }
set { mColor = value; }
}
[XmlElement("Color")]
public string ColorStr
{
get { return ColorTranslator.ToHtml(Color); }
set { Color = ColorTranslator.FromHtml(value); }
}
注意 :如果需要将Color
转换为byte[]
,则可以添加一个附加属性以将颜色作为byte[]
也可以忽略[XmlIgnore]
属性。
如果ColorTranslator.ToHtml
提供的格式对您无效,则可以使用自定义的颜色转换,例如
public string ToCustomString(Color color)
{
return string.Format("{0},{1},{2},{3}", color.A, color.R, color.G, color.B);
}
还有一种用于从字符串分配颜色的类似方法。
希望能帮助到你-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.