Solved

How to deserialize the values types when they are empty

Posted on 2008-10-20
5
600 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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)…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

832 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