XMLSerializer--how to debug?

L

Larry Bud

I've got 2 XSD files which I've converted to classes with the xsd.exe
tool. I've created the first XMLSerializer object just fine, but the
2nd throws an exception when creating from the root class:

deserializer = New XmlSerializer(GetType(myrootclass))

Unable to generate a temporary class (result=1). error CS0030: Cannot
convert type 'string[]' to 'string' error CS0029: Cannot implicitly
convert type 'string' to 'string[]'

There's about 50 classes in this class file. I've gotten part of the
way down the tree so I can try to identify exactly what is throwing
this (and what it really means), but is there a better way, and more
importantly, how bad is XSD.exe in creating a class file that doesn't
serialize?
 
P

Peter Bromberg [C# MVP]

L

Larry Bud

You might want to look into "XSDObjectGen":http://www.microsoft.com/downloads/details.aspx?FamilyID=89E6B1E5-F66...
This is a little more full-featured than XSD.EXE and gives you more control.
There are a few others like this also, including one on sourceforge.
Unfortunately I must be having a Senior Moment, can't remember the name.
-- Peter
Site:http://www.eggheadcafe.com
UnBlog:http://petesbloggerama.blogspot.com
Short Urls & more:http://ittyurl.net



Larry Bud said:
I've got 2 XSD files which I've converted to classes with the xsd.exe
tool.  I've created the first XMLSerializer object just fine, but the
2nd throws an exception when creating from the root class:
deserializer = New XmlSerializer(GetType(myrootclass))
Unable to generate a temporary class (result=1). error CS0030: Cannot
convert type 'string[]' to 'string' error CS0029: Cannot implicitly
convert type 'string' to 'string[]'
There's about 50 classes in this class file.  I've gotten part of the
way down the tree so I can try to identify exactly what is throwing
this (and what it really means), but is there a better way, and more
importantly, how bad is XSD.exe in creating a class file that doesn't
serialize?

Is it possible to step through the creation of the serializer object?
 
K

Kieran Coughlan

Larry Bud said:
I've got 2 XSD files which I've converted to classes with the xsd.exe
tool. I've created the first XMLSerializer object just fine, but the
2nd throws an exception when creating from the root class:

deserializer = New XmlSerializer(GetType(myrootclass))

Unable to generate a temporary class (result=1). error CS0030: Cannot
convert type 'string[]' to 'string' error CS0029: Cannot implicitly
convert type 'string' to 'string[]'

I had this error this morning. I had XML which looked like this:

<ConstraintList>
<Constraint>
<Test .... >
<Test .... >
</Constraint>
<Constraint>
: : : :

etc.

When XSD was creating classes, it was creating a class for Constraint, but
not using it in ConstraintList. Where you might expect "private Consraint
constraintField", instead it was creating "private Test[][] constraintField".
I kinda see where it was coming from, but it wasn't serializing.

For reasons I haven't bothered to try to understand at the moment, changing
the .cs file manually to that it was simply "private Test[] constraintField"
(and changing the accompaning property as well) meant that it serialized
fine. It certainly looked alright after a superficial examination of my
classes in the debugger.

Anyhow, I didn't want to be having to manually edit the .cs everytime I
regenerated it so I added a dummy attribute to Constraint. As I suspected,
was enough to make XSD behave and create the classes as I'd expect
(ConstraintList now has "private Constraint[] constraintField).

Hope this is some help to someone.

K
 
L

Larry Bud

Larry Bud said:
I've got 2 XSD files which I've converted to classes with the xsd.exe
tool.  I've created the first XMLSerializer object just fine, but the
2nd throws an exception when creating from the root class:
deserializer = New XmlSerializer(GetType(myrootclass))
Unable to generate a temporary class (result=1). error CS0030: Cannot
convert type 'string[]' to 'string' error CS0029: Cannot implicitly
convert type 'string' to 'string[]'

I had this error this morning. I had XML which looked like this:

<ConstraintList>
  <Constraint>
    <Test .... >
    <Test .... >
  </Constraint>
  <Constraint>
   : : : :

etc.

When XSD was creating classes, it was creating a class for Constraint, but
not using it in ConstraintList. Where you might expect "private Consraint
constraintField", instead it was creating "private Test[][] constraintField".
I kinda see where it was coming from, but it wasn't serializing.

For reasons I haven't bothered to try to understand at the moment, changing
the .cs file manually to that it was simply "private Test[] constraintField"
(and changing the accompaning property as well) meant that it serialized
fine. It certainly looked alright after a superficial examination of my
classes in the debugger.

Anyhow, I didn't want to be having to manually edit the .cs everytime I
regenerated it so I added a dummy attribute to Constraint. As I suspected,
was enough to make XSD behave and create the classes as I'd expect
(ConstraintList now has "private Constraint[] constraintField).

Hope this is some help to someone.

Thanks. My problem turned out to be a poorly designed schema, which
we fixed.

I honestly think few people are doing serialization, as I've had
almost no help when a question has arisen.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top