2017-09-26 5 views
0

J'écris une application ASP.NET MVC (5) dans laquelle j'ai besoin de faire une sérialisation XML personnalisée. Avant de continuer, je devrais mentionner que je n'étais pas exactement sûr si cette question appartient ici ou sur un autre forum. Si cette question serait mieux adaptée ailleurs, s'il vous plaît faites le moi savoir. Je vais le déplacer avec plaisir.Comment sérialiser des données au format XML sans schéma .xsd?

Présentation du logiciel:

J'ai une vue qui a une forme pour l'utilisateur de remplir. Lorsque l'utilisateur remplit les champs requis et clique sur le bouton submit, les informations contenues dans le formulaire doivent être sérialisées en XML (en fonction de certaines exigences XML) et publiées dans une URL. C'est assez simple pour certains, j'en suis sûr. J'ai très peu d'expérience à faire ce genre de chose dans ASP.NET MVC.

Je ne possède pas le document .xsd qui contient le schéma XML. J'ai un document qui contient les spécificités XML (un document Word), mais le document .xsd réel n'est pas disponible pour moi. Je ne suis pas sûr de savoir comment sérialiser les données afin que le XML se déroule comme il est censé le faire.

Je le modèle suivant:

public class BookingRequest 
    { 
     public string billTo { get; set; } 
     public string bookingStatus { get; set; } 
     public string partNote { get; set; } 
     public int height { get; set; } 
    } 

Notez que ceci est une version abrégée; il y a beaucoup plus de champs dans cette classe. Quoi qu'il en soit, je dois le champ height pour ressembler à ceci quand il est sérialisé en XML:

<HeightOf>15</HeightOf> 

Je dois aussi tous les éléments dans le fichier XML à adhérer à ce schéma (où tous les champs du formulaire I mentionné tombent sous l'étiquette <BookingRequest>):

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

Puis-je faire sans le schéma?

Toute aide est grandement appréciée.

+1

S'il vous plaît passer par ce lien - http://stackoverflow.com/questions/25273831/how-to-serialize-an-c-sharp-object-into-xml-without-schema-info et espérons, ce serait une solution. –

+0

@ AT-2017 Merci. Je vais passer avec plaisir ce poste. – ic3man7019

Répondre

1

Vous n'avez pas besoin de xsd, pour autant que vous sachiez quelle sera la structure souhaitée. Tout d'abord, vous devez décorer votre classe avec l'attribut [Serializable]. Ensuite, vous pouvez utiliser les attributs dans l'espace de noms System.Xml.Serialization pour contrôler le résultat. Par exemple, dans le cas de la propriété de la hauteur, il peut être atteindre comme ceci:

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

Voir ce pour plus de détails:

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

+1

Très, très utile. Je vous remercie. +1 pour l'instant, réponse possible plus tard. – ic3man7019