EDIT: See Pavel's answer below -- the 'type not recognized error' was caused by a mismatch between the class heirarchy in my parsing code (which I did not include here) and my XML schema. The 'type not recognized' error was something of a red herring, but once I fixed things the parsing works just fine. If you get to this question because you've googled for that error message, triple-check your heirarchies!
I have the XML file shown below. When I view it in VS2008, Intellisense does not report any errors. However when I try to parse it with XmlSerializer.Deserialize, I get the exception:
The specified type was not recognized: name='UTCTimeStamp_t', namespace='http://www.fixprotocol.org/ATDL-1-1/Core', at <Parameter xmlns='http://www.fixprotocol.org/ATDL-1-1/Core'>.
(The offending xsi:Type, "UTCTimeStamp_t", is defined in the referenced XSD file as shown below the XML.)
Why does XmlSerializer reject the XML even though Intellisense shows it as being valid? (I double-checked that both are getting the same copy of the XSD file.)
Is there a change I can make, or a workaround I can apply, to get this to parse?
NOTE: I am doing this in Silverlight3 -- are there any particular limitations to that version of the serializer?
Here's the XML:
<?xml version="1.0" encoding="utf-8"?>
<Strategies
xmlns="http://www.fixprotocol.org/ATDL-1-1/Core"
xmlns:core="http://www.fixprotocol.org/ATDL-1-1/Core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="http://www.fixprotocol.org/ATDL-1-1/Core http://www.myserver.com/atdl-core-1-1.xsd"
strategyIdentifierTag="7620"
>
<Strategy name="Tazer1" uiRep="Tazer" wireValue="Tazer" version="1" fixMsgType="D" providerID="ABC">
<Parameter name="StartTime" xsi:type="core:UTCTimeStamp_t" fixTag="7602" use="required" localMktTz="America/New_York">
<Description>Strategy Start Time</Description>
</Parameter>
</Strategy>
</Strategies>
Here's the snippet of the XSD file:
<xs:complexType name="UTCTimeStamp_t">
<xs:complexContent>
<xs:extension base="core:Parameter_t">
<xs:attribute name="minValue" type="core:UTCTimeStamp"/>
<xs:attribute name="maxValue" type="core:UTCTimeStamp"/>
<xs:attribute name="dailyMinValue" type="core:LocalMktTime"/>
<xs:attribute name="dailyMaxValue" type="core:LocalMktTime"/>
<xs:attribute name="localMktTz" type="xs:string">
<xs:annotation>
<xs:documentation>
These string values must correspond to time zone values from the zoneinfo database,
also known as the tz database.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="constValue" type="core:UTCTimeStamp"/>
<xs:attribute name="dailyConstValue" type="core:LocalMktTime"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>