0

I'm using xsd to generate classes from a schema.

The schema is for version: 3.2.3

When I try to deserialize a file from version 3.2.1 using this schema, I get an InvalidOperationException because the root node contains xmlns="3.2.1".

If I change the root node to xmlns="3.2.3" it loads fine.

So the question is, is there a way to load the 3.2.1 file when my xsd generated classes are for the 3.2.3 schema? Preferrably something on the XmlSerializer (or XmlReaderSettings) that says to allow files with xmlns="3.2.1" or xmlns="3.2.2".

If it helps, this is for AUTOSAR arxml files.

Matt M
  • 11
  • 3
  • Use the xsd tool and compare the c# classes between 3.2.1 and 3.2.3. There is not one answer. The schema changes and could be due to a correction, or parameter than is now requires and your xml is missing the parameter. Using Beyond compare one the c# classes will give you the answer. The solution may be to modify the c# classes so they work with both new and old version. – jdweng Dec 31 '20 at 13:41
  • I suppose you could make a custom `XmlReader`, similar to `NamespaceIgnorantXmlTextReader` from [this answer](https://stackoverflow.com/a/873281) to [Can I make XmlSerializer ignore the namespace on deserialization?](https://stackoverflow.com/q/870293), that remaps the namespace `3.2.1` to `3.2.3`. But there may be other changes to the schema that invalidate such a solution, agree with jdweng that you should compare the old and new auto-generated classes to see what else changed. – dbc Jan 06 '21 at 23:49

0 Answers0