2009-06-09 16 views
0

現在、私はこのようなXMLファイルを持っている...生成XSD

 

<ArrayOfService> 
    <Service> 
     <Name> 
      Something 
     </Name> 
     <Id> 
      8003 
     </Id> 
    </Service> 
</ArrayOfService> 
 

これは、自動的に次のようになりますクラスから生成されています...


public class Service{ 
    public string Name; 
    public int Id; 

    public Service(){ 
    } 
} 

クラスをXMLに変換するには、次のようにします。


XmlSerializer xs = new XmlSerializer(typeof(Service)); 
xs.Serialize(context.Response.OutputStream, FunctionReturnsTypeService()); 

このようにXSDを自動的に生成する方法はありますか?

EDIT:

また、私はそれをシリアル化していて、XMLにこのスキーマを追加する方法はありますか?

+0

「このスキーマをXMLに追加する」とはどういう意味ですか?出力にはどのようなものが含まれていますか? – Cheeso

+0

生成されたxmlの上部に次のようなものがあります。 apandit

+0

xmlns = "foo"はスキーマではなく名前空間を示します。タイプをシリアライズするときに特定のxml名前空間を使用する場合は、そのタイプの属性として[XmlType(Namespace = "Foo")]を使用できます。 – Cheeso

答えて

2

xsd.exeツール(%netsdk20%\ bin \ xsd.exe)は、XMLドキュメントの型を推定します。

(あなたはまた、XMLドキュメントまたはスキーマからクラスを生成するために/ cオプションを使用することができます。)

あなたはここを参照してください、その後、XMLドキュメントにスキーマへの参照を埋め込みたい場合は、次の http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.xml/2006-12/msg00040.html

要約: attrの名前として「schemaLocation」を指定し、その属性の名前空間として「http://www.w3.org/2001/XMLSchema-instance」を指定して、XmlAttribute属性でタイプのメンバーを修飾します。 C#のこの例のように、

[System.Xml.Serialization.XmlAttributeAttribute("schemaLocation", 
    Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)] 
private string xsiSchemaLocation = "YourSchema.xsd"; 
+0

XSDツールは動作しますが、クラスを生成するための/ cオプションは動作しません。 xsd myfile.xmlと入力したところ、スキーマが生成されました。驚くばかり。さて、私の質問の第二部分のため:D – apandit

+0

右 -/cはクラスを生成します。うわー! – Cheeso

+0

オンザフライスキーマ生成の場合 http://stackoverflow.com/questions/336988/xml-serialization-and-schema-without-xsd-exe – apandit

関連する問題