2017-09-26 9 views
0

カスタムXMLシリアル化を行う必要があるASP.NET MVC(5)アプリケーションを作成しています。私が続ける前に、私は、この質問がここにあるのか他のフォーラムにあるのか正確にはわからなかったと言及するべきです。この質問が他の場所に適している場合は、教えてください。私は喜んでそれを動かすでしょう。.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; } 
    } 

注意を。このクラスにはさらに多くのフィールドがあります。とにかく、私はそれがXMLにシリアル化されるときに、このように見えるheightフィールドを必要とする:

<HeightOf>15</HeightOf> 

私は、フォームIのフィールドのどこ全て(このスキーマに準拠するXML内のすべての要素を必要とします<BookingRequest>タグで述べた秋):

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

私はスキーマなしでこれを行うことができますか?

ご協力いただきまして誠にありがとうございます。

+1

このリンクを介して行ってください - http://stackoverflow.com/questions/25273831/how-to-serialize-an-c-sharp-object-xml-without-schema-infoと希望、これは解決策です。 –

+0

@ AT-2017ありがとうございます。私は喜んでこの記事を読むでしょう。 – ic3man7019

答えて

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

は、詳細はこれを参照してください。

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

+1

とても役に立ちました。ありがとうございました。 +1は今のところ、可能な答えは後で。 – ic3man7019

関連する問題