Solved

How to deserialize the values types when they are empty

Posted on 2008-10-20
5
596 Views
Last Modified: 2013-12-17
I have simple xml file and class for that, while deserilizing the  if the xmlelement of type (int) is empty i am having problem. If I have values in the xml file it is working with no issues.
using System;

using System.Collections.Generic;

using System.Text;

using System.Xml;

using System.Xml.Serialization;

 

namespace ConsoleApplication1

{

    [Serializable]

    public class Student

    {

        private int no;

        private string name;

 

        public int No

        {

            get { return no; }

            set { no = value; }

        }

 

        [XmlElement(IsNullable=true)]

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

 

    }

}

 

<?xml version="1.0" encoding="utf-8" ?>

<Student>

	<No></No>

	<Name>Test</Name>

</Student>

Open in new window

0
Comment
Question by:tryokane
  • 3
  • 2
5 Comments
 
LVL 15

Assisted Solution

by:angus_young_acdc
angus_young_acdc earned 100 total points
ID: 22756239
Its because you cant have type int etc as a null.  If you want that you have to explicitly say it can be set as a value of type null by using "?"  Example is in the code snippet.  That will say that the integer value can be null
    [Serializable]

    public class Student

    {

        private int? no;

        private string name;
 

        public int? No

        {

            get { return no; }

            set { no = value; }

        }
 

        [XmlElement(IsNullable = true)]

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

Open in new window

0
 
LVL 2

Author Comment

by:tryokane
ID: 22763828
Can we do the same way for datetime and decimal types also?
0
 
LVL 2

Author Comment

by:tryokane
ID: 22763940
I tried the above way but its not working.I am getting a message like "There was an error in the xml message".
0
 
LVL 15

Expert Comment

by:angus_young_acdc
ID: 22766928
Where exactly are you getting the error (what code is producing it)?  As I would be just guessing without knowing more.
0
 
LVL 2

Accepted Solution

by:
tryokane earned 0 total points
ID: 22865631
Ok,I was able to find a solution for the above problem.The below way is the method to solve this for any type of data.Thanks for all the solutions and help offered!
 [XmlIgnore]

        public decimal ManualOverridePrice

        {

            get { return m_ManualOverridePrice; }

            set { m_ManualOverridePrice = value; }

        }
 

        [XmlElement(ElementName = "ManualOverridePrice", IsNullable = true)]

        public string ManualOverridePriceHandler

        {

            get { return m_ManualOverridePrice.ToString(); }

            set { if (value != null && value != string.Empty) m_ManualOverridePrice = XmlConvert.ToDecimal(value); }

        }

Open in new window

0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

IP addresses can be stored in a database in any of several ways.  These ways may vary based on the volume of the data.  I was dealing with quite a large amount of data for user authentication purpose, and needed a way to minimize the storage.   …
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now