gpt4 book ai didi

c# - 如何在 C# 中使用 xmlserializer 自定义 xml?

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:37 24 4
gpt4 key购买 nike

我有以下类(class):

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 序列化程序正在使用字节数组序列化颜色。所以结果很奇怪。

我的建议是使用类型为 string 的公共(public)属性来序列化颜色,然后使用转换将颜色转换为字符串,反之亦然。

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);
}

还有一个类似的方法,用于从字符串中提取颜色。

希望对您有所帮助-

关于c# - 如何在 C# 中使用 xmlserializer 自定义 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329870/

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