tags:

views:

3458

answers:

3

I tried following the answer to this question, but could not get xsd.exe to happily take the XSD files and turn them into a class.

Using the XSD files here: http://download.adamhaile.com/SO/XSD.zip
Can anyone help me convert these to a valid C# class that can then be used to serialize an XML document to?

Note: Yes, these are from an undocumented Yahoo Movies API that I'm trying to use. It looks like it's using a standard Microsoft based schema pattern, so I would imagine this is quite possible.

Here is an example of the results from one of the API calls: http://new.api.movies.yahoo.com/v2/listTheatersByPostalCode?pcode=12345&count=30&yprop=msapi

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

+1  A: 

Use the xsd.exe that comes with visual studio. iirc xsd /classes theschema.xsd

But since you tried that, what went wrong ?

nos
It spit out only a partial class, that didn't work and said that the schema could not be validated.
Adam Haile
+1  A: 

Be sure to put all referenced schemas on the cmd line.
When I do this, I get a bunch of warnings.

$ 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.

If I yank out yahooTheater.xsd from that list, it works fine.

I didn't even look at the XSDs but it seems to me that xsd.exe thinks some elements have been doubly defined. you may be able to manually reconcile that problem by combining yahootheater.xsd with yahooTheaterAmenity.xsd. Or, if you don't care about the amenity part, drop it.

Cheeso
So, taking out that file ends up giving me the same exact .cs file, it just doesn't throw those errors...weird...Though, what's the deal with all the classes being partial?
Adam Haile
huh? "taking out that file ends" ? As for the partial classes, that's so you can extend them if you like. They are *potentially* partial. They will compile with no mods and no further code.
Cheeso
I meant that removing yahooMovieTheater.xsd results in the same .cs file as if I had left it
Adam Haile
oh, yeah, I see now. What you wrote was clear. :/ Hmm, not enough coffee in me, I guess. LIke I said, I did not even look into those xsd files, but from what you told me, it's possible that yahooTheaterAmenities.xsd is just a superset of yahooTheater.xsd, and that they were not intended to be used together. Maybe Yahoo designed them so people could "opt out" of retrieving the more detailed data with theater amenities. If there is doc for the schema, maybe even within the .xsd files themselves, look for a comment on that question. Otherwise it seems like you're well sorted.
Cheeso
Sounds about right...Thanks.BTW, great work on DotNetZip. I came across that about a month ago and it saved me a huge amount of time getting zip functionality into my app :)
Adam Haile
glad you like it!
Cheeso
A: 

How about giving CodeXS a try? They normally work pretty well for me.

Bob