.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
Sharon Maxwell
Post New Web Links

Can serialize but not deserialize class containing an xs:list attribute using XmlSerializer

Posted By:      Posted Date: September 01, 2010    Points: 0   Category :.NET Framework
 
I have a simple serializable class along the lines of: [Serializable] [XmlType] public class MyClass { [XmlAttribute("values")] public int[] Values { get; set; } } If I create an instance of this class with Values set to an empty collection the XmlSerializer class produces this output as expected: <?xml version="1.0" encoding="utf-16" ?> <MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" values="" /> However, deserializing this exact output throws a System.FormatException: Input string was not in a correct format. Shouldn't the XmlSerializer be able to deserialize this, since it produced the xml string in the first place?


View Complete Post


More Related Resource Links

Make sure that the class defined in this code file matches the 'inherits' attribute, and that it e

  

Here is the page directive for the page that throws the error:

<%
@ Page language="c#" Inherits="University.AspNet.Index" CodeFile="Index.aspx.cs" %>

The code behind file Index.aspx.cs starts like this:

using University.Framework.UI;

namespace University.AspNet

{
      
public partial class Index : University.Framework.UI.HomePage

The code behind is extending this HomePage class, which is in turn an extenstion of another class University.Framework.UI.Page, which extends the System.Web.UI.Page class.

Am I misusing the I

XmlSerializer - how to define class to not generate attributes in root element?

  
Hi! I have simple class that I serialize to xml file: <?xml version="1.0" encoding="utf-8"?> <MyRootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Area="East">   <Products>     <SalesProduct Taxable="true">       <Name>Sofa</Name>     </SalesProduct>     <Product>       <Name>Television</Name>     </Product>   </Products> </MyRootElement> I don`t want have in xml file attributes xmlns:xsi and xmlns:xsd. How can I define class to not have these two attributes in xml file? I tried use XmlRoot attribute but there is no control for these two attributes. They are always generated. Regards

Serialize / DeSerialize XElement objecs using BinaryFormatter.

  
Hi, I'm having some business objects which contains XElement properties. I have some offline framework which serialize / deserialize using binary formatter. I'm getting the error "Type 'System.Xml.Linq.XElement' in Assembly 'System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable." when i try to serialize the xelement object I'm getting the XElement serializer error. We are bit too far with design and need to find some work around to solve this issue. The following program should give you the same error behavior. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml.Linq; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace XElementBinaryformatter {     public partial class Form1 : Form     {         private BinaryFormatter formatter = new BinaryFormatter();         public Form1()         {             InitializeComponent();         }         private void btnSerialize_Clic

Can you Serialize a Derived class, cast as it's base?

  
Can you Serialize a Derived class, cast as it's base? (Using the stock XmlSerializer.Serialize?)   (The overall goal I'm trying to achieve, is I have 1 object, and I need to serialize it in 2 different ways, 1 with full info, one with half info, and I *thought* a base class would be the way to do it)   e.g. I have a base and derived class   [XmlRoot("MyBaseXml" )] public class MyBaseClass { public string baseField = "base" ; } [XmlRoot("MyDerivedXml" )] public class MyDerviedClass : MyBaseClass { public string derivedField = "derived" ; }   I make a new instance of my derived class MyDerviedClass obj = new MyDerivedClass();   And then I have the following serialization method(s)   /// <summary> /// Saves an object to a file /// </summary> /// <param name="obj"> Object to save</param> /// <param name="fileName"> Path to output to</param> public void Serialize(object obj, string fileName) { Type type = obj.GetType(); XmlSerializer xmlSerializer = new XmlSerializer(type); Serialize(obj, fileName, type); } /// <summary> /// Saves an object to a file casting it as a specific type /// </summary> /// <param name="obj"> Object to save</param> /// <param name="fileName"

Serialize / DeSerialize XElement objecs using BinaryFormatter.

  
Hi, I'm having some business objects which contains XElement properties. I have some offline framework which serialize / deserialize using binary formatter. I'm getting the error "Type 'System.Xml.Linq.XElement' in Assembly 'System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable." when i try to serialize the xelement object I'm getting the XElement serializer error. We are bit too far with design and need to find some work around to solve this issue. The following program should give you the same error behavior. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml.Linq; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace XElementBinaryformatter {     public partial class Form1 : Form     {         private BinaryFormatter formatter = new BinaryFormatter();         public Form1()         {             InitializeComponent();         }         private void btnSerialize_Clic

How do I parse/serialize when parent list element is missing?

  
First thank you ahead of time for you help. I really need some help with this. Background, this is to be a REST service in .net 4.0 and I understand I have to use xmlserializer instead of datacontract serializer. The xsd and the generated class assumes there can be one or more geo locations in a Locations element. However, based on an unchangable requirement, I have to assume the parent Locations element may not be there and the xml can contain only one child location element. So instead of <?xml version="1.0" encoding="UTF-8"?> <findService   xmlns="urn:ietf:params:xml:ns:lost1"   xmlns:p2="http://www.opengis.net/gml"   serviceBoundary="value"   recursive="true"> <Locations>   <location id="12334456" profile="geodetic-2d">     <p2:Point id="point1" srsName="urn:ogc:def:crs:EPSG::4326">       <p2:pos>40.85614955747385 -73.77044677734375</p2:pos>     </p2:Point>   </location> </Locations>   <service>urn:service:sos</service> </findService> they can send the following instead <?xml version="1.0" encoding="UTF-8"?> <findService   xmlns="urn:ietf:params:xml:ns:lost1&

XmlSerializer: Serialize an array of System.Drawing.Color

  
Ok,  here is my problem... I am building a UI configuration tool that utiliizes a PropertyGrid.  One of the properties is a indexed list of Colors contained in an array: CategoryAttribute("Style"), DisplayName("Data Set Colors"), DescriptionAttribute(""), XmlArray("SetColors"), XmlArrayItem(ElementName="Color",Type=typeof(SColor))] public Color[] SetColors { get; set; } The beauty of the PropertyGrid is it knows how to handle this Poperty and properly handles array and list of Colors. BUT...   As we already know in order to serialize a Color,  we have to use a surrigate property,  which is very unfortunate, and I fear is one of those little thing MS just overlooked.  (I understand it is actually a structure and not a class and has not default properties from which to get type info from.) I am really amazed that when I do serialize the class,  the XML is soooo  close to what I need,  its just missing the actual color value data: <AppGridColumnConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Name>Label</Name> <SetColors> <Color /> <Color /> <Color /> </SetColors> <IsDefaultEditable>false</IsDefaultEditable> <IsDirtyCheck&

Select more than one row from an attribute list

  
Xquery newby! I was looking at the answers to the post "How do I get my xml in table form?"  and have a further question.
Here is what I have.

create

 

table #xcap (id int, xml_col xml)

Basics of Attribute class and codeaccess security

  
Hi,
    I am using code access security for my methods which are in a class library and hosted in ASP.Net process. The attribute class checks for some values in Session and sets the principalpermission appropriately. The method works fine allowing only valid threads to pass thru and exceute the method. But the problem is this happes only once and for every subsequent aspx calls does not hit the attribute class. (I guess CLR optimizes it). My problem is if the session has a different value then the attibute should behave appropriately. Now, it takes new value from Session only when I recycle my asp process and happens only once for the request. IS there a way to circumvent this? Any suggestions?

Serialize a list of XElements

  
I am using a Serializer to de-serialize a class which has various properties on it, int, string etc into xml.  This part currently is working fine.

However I want to add a new property to the class which I can assign raw inner xml to.  So when I de-serialize the class, I want this inner xml that i assigned to this new property to form part of the bigger piece of xml if you get the picture.

I have tried making the property of type string but that places strange characters in it and also I cannot use XElement because its a list of Xelements not just one.

e.g.:

<One>
  <OneOne></OneOne>
  <OneTwo></OneTwo>

</One>

I want to assign the xml that is in bold to a property in my class.  Then when that class is de-serialized it forms part of the bigger piece of xml e.g.:

<ClassXml>
  <ClassPropertyOne>
     <OneOne></OneOne>
     <OneTwo></OneTwo>

  <ClassPropertyOne>
<ClassXml>

So basically I want a datatype to use for ClassPropertyOne

How do I serialize a DataMember in a DataContract as an XML attribute

  

Hello guys,

I have the following class what I return on my WCF webservice;

 

[DataContract(Namespace = "http://schemas.pi.operational.petrobras.com.br")]
  public class SimpleMeasure
  {
    
    private DateTime? measureDate;
    private string value;

    [DataMember]
    public DateTime? MeasureDate
    {
      get { return measureDate; }
      set { measureDate = value; }
    }

    [DataMember]
    public string Value
    {
      get { return this.value; }
      set { this.value = value; }
    }
  }

 

Ho do I make it return a soapResponse like this ?

<SimpleMeasure <

Unable to bind a List of a [DataContract] class to a ListBox

  

Hello,

 

I have a class who is used by Silverlight though RIA Services and who contains the [DataContract] and on its properties [DataMember].

That class is also used by my WPF Application and i have a List<myClass> which i want to bind it on ListBox.

 

The problem is when i bind the list, when i select an item in my listbox, the first item is always selected and the right-click doesn't work properly.

In fact, the behavior of UI is weird and badly refreshed.

But, before, the class didn't have DataContract/DataMember attributes and it worked fine.

 

Do you know, a workaround to continue to use that class and avoid to create an other class specially for databind ?

 

 

Regards,

Guillaume.


Deserialize json into List

  

How can we Convert Json string into List<t> without using 3rd Party libraries. like json.net ..

Why cant we import the System.Runtime.Serialization.Json Library into codebehind.

I have a service wherei  am returning a json string of the List<t> to a wpf app..

There i need to convert back ...


Deserialize json into List

  

How can we Convert Json string into List<t> without using 3rd Party libraries. like json.net ..

Why cant we import the System.Runtime.Serialization.Json Library into codebehind.

I have a service wherei  am returning a json string of the List<t> to a wpf app..

There i need to convert back ...


Xml Serialization: choose tag name for class instances in a generic ObservableCollection / List

  

Hi,

I've creating a class called Graphics, deriving from a generic ObservableCollection where T is a custom class called Graphic :

public class Graphics : ObservableCollection<Graphic>
{
public Graphics()
{
}
}

Another class has a Graphics field. When I serialize to XML this class, this works fine :

<MyOtherClassInstance>
 <Graphics>
  <Graphic id="1">
  <Graphic id="2">
  <Graphic id="3">
 </Graphics>
</MyOtherClassInstance>

But I would like to have the following:

<MyOtherClassInstance>
 <Gs>
  <Gr id="1">
  <Gr id="2">
  <Gr id="3">
 </Gs>
</MyOtherClassInstance>

How can I process, I can't find a solution.

Please help.

Thanks


Xml Serialization: change tag name of class instances in a generic ObservableCollection / List

  

Hi,

I've creating a class called Graphics, deriving from a generic ObservableCollection where T is a custom class called Graphic :

public class Graphics : ObservableCollection<Graphic>
{
public Graphics()
{
}
}

Another class has a Graphics field. When I serialize to XML this class, this works fine :

<MyOtherClassInstance>
 <Graphics>
  <Graphic id="1">
  <Graphic id="2">
  <Graphic id="3">
 </Graphics>
</MyOtherClassInstance>

But I would like to have the following:

<MyOtherClassInstance>
 <Gs>
  <Gr id="1">
  <Gr id="2">
  <Gr id="3">
 </Gs>
</MyOtherClassInstance>

How can I process, I can't find a solution.

Please help.

Thanks


Categories: 
ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend