2017-09-26 3 views
0

Ich schreibe eine ASP.NET MVC (5) -Anwendung, in der ich einige benutzerdefinierte XML-Serialisierung durchführen muss. Bevor ich weitermache, sollte ich erwähnen, dass ich nicht genau wusste, ob diese Frage hier oder in einem anderen Forum gehört. Wenn diese Frage woanders besser passt, lass es mich wissen. Ich werde es gerne verschieben.Wie kann ich Daten ohne XML-Schema in XML serialisieren?

Software im Überblick:

Ich habe eine Ansicht, die ein Formular für den Benutzer ausfüllen muss. Wenn der Benutzer die erforderlichen Felder ausfüllt und auf die Schaltfläche submit klickt, sollten die Informationen im Formular (basierend auf bestimmten XML-Anforderungen) in XML serialisiert und an eine URL gesendet werden. Das ist ziemlich einfach für einige, da bin ich mir sicher. Ich habe sehr wenig Erfahrung mit so etwas in ASP.NET MVC.

Ich besitze nicht das .xsd-Dokument, das das XML-Schema enthält. Ich habe ein Dokument, das die XML-Details enthält (ein Word-Dokument), aber das eigentliche .xsd-Dokument ist für mich nicht verfügbar. Ich bin nicht sicher, wie man die Daten serialisiert, damit das XML herauskommt, wie es soll.

Ich habe folgendes Modell:

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

Beachten Sie, dass es sich um eine gekürzte Version; Es gibt WAY mehr Felder in dieser Klasse. Wie auch immer, ich brauche das height Feld wie folgt aussehen, wenn es um XML serialisiert wird:

<HeightOf>15</HeightOf> 

ich auch alle Elemente in der XML diesem Schema einhalten müssen (wo alle Felder in der Form I genannte Fall unter dem <BookingRequest> Tag):

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

Kann ich dies tun, ohne das Schema?

Jede Hilfe wird sehr geschätzt.

+1

Bitte über diesen Link gehen - http://stackoverflow.com/questions/25273831/how-to-serialize-ein-c-sharp-objekt-in-xml-ohne-schema-info und hoffe, das wäre eine lösung. –

+0

@ AT-2017 Danke. Ich werde diesen Beitrag gerne durchgehen. – ic3man7019

Antwort

1

Sie brauchen die xsd nicht, solange Sie wissen, wie die gewünschte Struktur sein wird. Zuerst müssen Sie Ihre Klasse mit dem Attribut [Serializable] dekorieren. Dann können Sie die Attribute im System.Xml.Serialization-Namespace verwenden, um das Ergebnis zu steuern. Zum Beispiel im Fall von Höheneigenschaft, kann es wie dies zu erreichen sein:

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

dies Siehe für weitere Details:

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

+1

Sehr, sehr hilfreich. Vielen Dank. +1 für jetzt, mögliche Antwort später. – ic3man7019

Verwandte Themen