2017-09-26 89 views
0

我正在写一个ASP.NET MVC(5)应用程序,我需要做一些自定义的XML序列化。在我继续之前,我应该提一下,我不确定这个问题是属于这里还是在另一个论坛上。如果这个问题会更适合别的地方,请告诉我。我很乐意移动它。如何在没有.xsd模式的情况下将数据序列化为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; } 
    } 

注意,这是一个简化版本;这门课有更多的领域。无论如何,我需要height场看起来像这样当它被序列化到XML:

<HeightOf>15</HeightOf> 

我还需要的所有元素在XML坚持这个模式(所有形式我的字段在<BookingRequest>标签中提到秋季):

<Data> 
    <Header> 
     <UserId/> 
     <Password/> 
    </Header> 
    <BookingRequest> 
      .. 
      .. 
    </BookingRequest> 
</Data> 

我能做到这一点,而不架构?

任何帮助是极大的赞赏。

+1

请通过此链接 - http://stackoverflow.com:

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

进一步详情,请参阅本/ questions/25273831/how-to-serialize-an-c-sharp-object-into-xml-without-schema-info和希望,这将是一个解决方案。 –

+0

@ AT-2017谢谢。我很乐意阅读这篇文章。 – ic3man7019

回答

1

只要您知道如何成为理想的结构,您就不需要xsd。 首先,你需要用[Serializable]属性来修饰你的类。然后,您可以使用System.Xml.Serialization命名空间中的属性来控制结果。例如,在高度财产的情况下,它可以实现这样的:

https://docs.microsoft.com/en-us/dotnet/standard/serialization/controlling-xml-serialization-using-attributes

+1

非常非常有帮助。谢谢。现在+1,稍后可能的答案。 – ic3man7019

相关问题