2009-06-29 12 views
2

this questionの答えに従ってみましたが、XSDファイルをうまく利用してクラスに変換するxsd.exeを取得できませんでした。ここでXSDファイルを使用してXSDファイルをC#シリアライズ可能クラスに変換

http://download.adamhaile.com/SO/XSD.zip
は、誰も私は、その後にXMLドキュメントをシリアル化するために使用することができ、有効なC#クラスにこれらを変えるのを助けることはできますか?

注:はい、私が使用しようとしている文書化されていないYahoo Movies APIのものです。標準のMicrosoftベースのスキーマパターンを使用しているようですので、これはかなり可能です。ここで

は、APIコールの1からの結果の一例である: http://new.api.movies.yahoo.com/v2/listTheatersByPostalCode?pcode=12345&count=30&yprop=msapi

http://download.adamhaile.com/SO/XSD.zip

答えて

4

参照されているすべてのスキーマを必ずcmd行に配置してください。
これを行うと、私は警告の束を得る。

$ xsd /c listTheatersByPostalCode.xsd yahooMovie.xsd yahooMovieCredit.xsd yahooMovieMedia.xsd yahooMoviePhoto.xsd yahooMovieTheater.xsd yahooMovieTheaterAmenity.xsd yahooMultimedia.xsd yahooUser.xsd 
Microsoft (R) Xml Schemas/DataTypes support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.42] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Schema validation warning: The global element 'urn:yahoo:movie:theater:TheaterList' has already been declared. Line 6, position 4. 
Schema validation warning: The global attribute 'urn:yahoo:movie:theater:id' has already been declared. Line 7, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:TheaterListType' has already been declared. Line 10, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:TheaterType' has already been declared. Line 19, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:PostalAddressType' has already been declared. Line 32, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:AmenityListType' has already been declared. Line 55, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:MovieListType' has already been declared. Line 65, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:MovieType' has already been declared. Line 71, position 4. 
Schema validation warning: The complexType 'urn:yahoo:movie:theater:ShowsType' has already been declared. Line 82, position 4. 

Warning: Schema could not be validated. Class generation may fail or may produce incorrect results. 

このリストからyahooTheater.xsdを取り除いても問題ありません。

私はXSDも見ていませんでしたが、xsd.exeはいくつかの要素が二重に定義されていると思います。 yahootheater.xsdとyahooTheaterAmenity.xsdを組み合わせて、手動で問題を調整することができます。または、アメニティの部分を気にしない場合は、それを落としてください。

+0

それで、そのファイルを取り出すと、同じ正確な.csファイルが得られます。ちょうどそれらのエラーをスローしません... ... すべてのクラスが部分的に扱われているのはどうですか? –

+0

huh? "そのファイルを取り出して終了する"?部分的なクラスに関しては、それはあなたが好きならば拡張することができます。それらは潜在的に*部分的です。彼らは改造や追加のコードなしでコンパイルします。 – Cheeso

+0

私はyahooMovieTheater.xsdを取り除くと、同じ.csファイルになりますが、残した場合は –

2

は、Visual Studioに付属しているXsd.exeではを使用してください。 iirc xsd/classes theschema.xsd

しかし、これを試してから何がうまくいかなかったのですか?

+0

部分的なクラスだけが吐き出され、うまく動作せず、スキーマを検証できないと言いました。 –

1

CodeXSを試してみてはいかがですか?彼らは通常私のためにかなりうまく動作します。

+0

名前空間に入力するもの(コンテキストが必要です) Visual StudioでXsdを表示すると、Xml Schema Explorerで "Empty Namespace"と表示されます。 – ganders

2

http://www.altova.com/download.htmlを試してください。 30日間の試用期間がありますが、xml xsdをクラスに変換します。また、xmlをリバースエンジニアリングしてxsdを作成します。