当我序列化时;
public class SpeedDial
{
public string Value { get; set; }
public string TextTR { get; set; }
public string TextEN { get; set; }
public string IconId { get; set; }
}
结果:
<SpeedDial>
<Value>110</Value>
<TextTR>Yangın</TextTR>
<TextEN>Fire</TextEN>
<IconId>39</IconId>
</SpeedDial>
但我想要的是:
<speedDial>
<value>110</value>
<text>
<TR>Yangın</TR>
<EN>Fire</EN>
</text>
<iconId>39</iconId>
</speedDial>
我想学习规范方式......
答案 0 :(得分:2)
三种方法跳跃于脑海:
1:创建用于序列化的属性,并使用[XmlIgnore]
隐藏其他属性
2:实施IXmlSerializable
并自己动手
3:为序列化创建单独的DTO
这是一个将“文本”部分重新分解为XmlSerializer
想要的对象,同时保留原始公共AIP的示例:
[Serializable]
public class SpeedDial
{
static void Main()
{
XmlSerializer ser = new XmlSerializer(typeof(SpeedDial));
SpeedDial foo = new SpeedDial { Value = "110", TextTR = "Yangin",
TextEN = "Fire", IconId = "39" };
ser.Serialize(Console.Out, foo);
}
public SpeedDial()
{
Text = new SpeedDialText();
}
[XmlElement("text"), EditorBrowsable(EditorBrowsableState.Never)]
public SpeedDialText Text { get; set; }
public string Value { get; set; }
[XmlIgnore]
public string TextTR
{
get { return Text.Tr; }
set { Text.Tr = value; }
}
[XmlIgnore]
public string TextEN
{
get { return Text.En; }
set { Text.En = value; }
}
public string IconId { get; set; }
}
[Serializable]
public class SpeedDialText
{
[XmlElement("EN")]
public string En { get; set; }
[XmlElement("TR")]
public string Tr { get; set; }
}
答案 1 :(得分:1)
如果我是你,我不会这样做,因为你使你的序列化程序依赖于你的业务对象。对于小写,您可以使用xml-customattributes。
答案 2 :(得分:0)
public class SpeedDial
{
public string Value { get; set; }
public TextClass text;
public string IconId { get; set; }
}
public class TextClass
{
public string TR { get; set; }
public string EN { get; set; }
}