Solved

How to deserialize the values types when they are empty

Posted on 2008-10-20
5
602 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

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

Suggested Solutions

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)…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

730 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