我正在编写一个ASP.NET MVC(5)应用程序,我需要在其中进行一些自定义XML序列化。在我继续之前,我应该提一下,我不确定这个问题是属于这里还是属于另一个论坛。如果这个问题更适合其他地方,请告诉我。我很乐意搬家。
软件概述:
我有一个视图,其中包含一个供用户填写的表单。当用户填写必填字段并单击submit
按钮时,表单中的信息应序列化为XML(基于某些XML要求),并发布到URL。对我来说这很简单,我敢肯定。我在ASP.NET MVC中做这种事情的经验很少。
我没有包含XML架构的.xsd文档。我有一个包含XML细节(Word文档)的文档,但实际的.xsd文档不可用。我不确定如何序列化数据,以便XML以预期的方式进行。
我有以下型号:
public class BookingRequest
{
public string billTo { get; set; }
public string bookingStatus { get; set; }
public string partNote { get; set; }
public int height { get; set; }
}
请注意,这是一个缩写版本;这个课程中有更多的字段。无论如何,当序列化为XML时,我需要height
字段看起来像这样:
<HeightOf>15</HeightOf>
我还需要XML中的所有元素都遵循这个模式(我提到的表单中的所有字段都在<BookingRequest>
标记下):
<Data>
<Header>
<UserId/>
<Password/>
</Header>
<BookingRequest>
..
..
</BookingRequest>
</Data>
我可以在没有架构的情况下这样做吗?
非常感谢任何帮助。
答案 0 :(得分:1)
您不需要xsd,只要您知道将如何成为所需的结构。 首先,您需要使用[Serializable]属性来装饰您的类。然后,您可以使用System.Xml.Serialization命名空间中的属性来控制结果。例如,在高度属性的情况下,可以这样实现:
[Serializable]
public class BookingRequest
{
public string billTo { get; set; }
public string bookingStatus { get; set; }
public string partNote { get; set; }
[XmlElement(ElementName = "HeightOf")]
public int height { get; set; }
}
有关详细信息,请参阅此处: