2016-07-08 3 views
0

XSD-> C#からクラスを生成するためにXSD.exeを使用していますが、自動シリアル化を使用しています。C#キーワードである要素を含むXSDの自動生成クラス

XSDの要素の1つはeventです。これはC#キーワードであるため、生成されるクラス名は@eventです。私はこれが有効なクラス名であることを知らなかったが、それは醜い。

XSD.exeのクラス名の選択を制御できないことがわかります。クラス名はXSD要素名に対応しています。 BUT@eventクラスの名前を手動で変更できる方法はありますか?C#/ .NETはシリアル化の方法をまだ知っていますか?クラス定義に追加できる属性がいくつかありますか?

明らかに、クラスを再生成するたびにこれをやり直す必要があります。

答えて

0

シリアル化を制御する属性を使用して、クラスを修飾することができます。

このMSDNの記事を参照してください:https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx

MSDNの記事クラス名について言いたいこと、これがあります。

クラスに適用される(とのみ クラス)ことができる2つの属性があります。 XmlRootAttributeおよびXmlTypeAttributeこれらの属性は と非常に似ています。 XmlRootAttributeは、1つのクラスにのみ適用できます。 シリアル化されたときに、XML文書のオープン と終了要素、つまりルート要素を表すクラスです。一方、 XmlTypeAttributeは、ルートクラスを含む のどのクラスにも適用できます。

[XmlRoot("NewGroupName")] 
[XmlType("NewTypeName")] 
public class Group{ 
    public Employee[] Employees; 
} 

このクラスがコンパイルされ、XMLスキーマ定義ツールは、そのスキーマを生成するために を使用している場合は、 グループを記述し、次のXMLを見つけるだろう。これとは対照的に

<xs:element name="NewGroupName" type="NewTypeName"> 

あなたはクラスのインスタンスをシリアル化した場合、唯一の NewGroupNameは、XML文書に記載されています。

<NewGroupName> 
    . . . 
</NewGroupName> 
+0

一般的に、リンクのみの回答には悩まされます(リンクが壊れた場合)。小さな事例を教えてください。 –

+0

質問に関連するリンクされたMSDNページの例を更新しました – Joon

関連する問題