1
我想序列化类层次结构,并在结果xml中保留层次结构树。我使用实现Message抽象类的Heartbeat对象设置ProtokolMessage类的消息属性 。由于输出结果,我想下面的XML:保持层次结构树的序列化类
<protocol>
<name>someName</name>
<messageId>1101</messageId>
<heartbeat>
<time>2013-04-02T17:35:55</time>
</heartbeat>
</protocol>
但是生成的XML是:
<protocol>
<Message xsi:type="heartbeat" />
<name>someName</name>
<messageID xmlns="Message">1101</messageID>
</protocol>
领域模型:
[XmlRoot("protocol")]
public class ProtocolMessage
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "messageID")]
public string MessageID { get; set; }
public Message Message {get; set;}
public ProtocolMessage()
{}
}
[XmlInclude(typeof(Heartbeat))]
public abstract class Message
{
public Message()
{ }
}
[XmlType(TypeName = "heartbeat")]
public class Heartbeat : Message
{
[XmlElement("time")]
protected string Time { get; set; }
public Heartbeat()
: this(DateTime.Now)
{
}
public Heartbeat(DateTime dateTime)
{
Time = dateTime.ToString("s");
}
}
public class Program
{
static void Main(string[] args)
{
var protocolMsg = new ProtocolMessage
{
Name = "someName",
MessageId = "1101",
Message = new Heartbeat();
};
var serializer = new XmlSerializer(typeof(ProtocolMessage));
StringWriter sw = new StringWriter();
serializer.Serialize(sw, this);
}
}
我能层次树的XML?
很酷,投票。我可以获得而不是吗? –
Maxim
我一直无法让它看起来那样,所以我不太确定。 –
我能够得到它的工作,但我不知道它是否会帮助你。见上面的编辑。 –