• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 491
  • Last Modified:

Deserialization XMl file

I am writing c# classes to deserialize xml file.
I am not able to write a class for the part below :
The problem is that OrderLine exists more then once and i want to deserialize order line to an array or something.

Any help will be appreciated

**********************************************************
<ORDER>
<OrderLine>
                        <LineNumber>1</LineNumber>
                        <Product>
                              <SuppliersProductCode/>
                              <BuyersProductCode>xxxx</BuyersProductCode>
                              <Description>xxxx7</Description>
                        </Product>
                        <Quantity>
                              <Packsize>EACH</Packsize>
                              <Amount>3</Amount>
                        </Quantity>
                                                                                                      
                        </Delivery>
                  </OrderLine>

<OrderLine>
                        <LineNumber>2</LineNumber>
                        <Product>
                              <SuppliersProductCode/>
                              <BuyersProductCode>xxxx</BuyersProductCode>
                              <Description>xxxx7</Description>
                        </Product>
                        <Quantity>
                              <Packsize>EACH</Packsize>
                              <Amount>3</Amount>
                        </Quantity>
                                                                                                      
                        </Delivery>
                  </OrderLine>
</ORDER>
public class Order
    {
           public OrderLine OrderLine;
    }
 
public class OrderLine
    {
        private int _LineNumber;
        private Product _Product;
        private Quantity _Quantity;
        
        public int LineNumber
        {
            set { _LineNumber = value; }
            get { return _LineNumber; }
        }
        public Product Product
        {
            set { _Product = value; }
            get { return _Product; }
        }
        public Quantity Quantity
        {
            set { _Quantity = value; }
            get { return _Quantity; }
        }  
    }
    public class Product
    {
        private string _BuyersProductCode;
        private string _Description;
 
        public string BuyersProductCode
        {
            set { _BuyersProductCode = value; }
            get { return _BuyersProductCode; }
        }
        public string Description
        {
            set { _Description = value; }
            get { return _Description; }
        }
    }
    public class Quantity
    {
        private int _Amount;
        public int Amount
        {
            set { _Amount = value; }
            get { return _Amount; }
        }
    }

Open in new window

0
WannabeNerd
Asked:
WannabeNerd
  • 4
  • 2
1 Solution
 
steezaCommented:
How about:


public class Order
    {
 
        private List<OrderLine> _orderLineList = new List<OrderLine>();
 
        public List<OrderLine> OrderLineList 
        {
            set {_orderLineList = value; }
            get { return _orderLineList; }
        }
    }
 
//Or
 
public class Order
    {
 
        private List<OrderLine> _orderLineList = new List<OrderLine>();
 
        public void AddOrderLine(Order order)
        {
         this._orderLineList.Insert(index,orderLine.LineNumber)
        }
 
        public Order AddOrderLine(int index)
        {
         return this._orderLineList[index]);
        }
        
        //add other accessor/modifier methods as appropriate
 
    }
 
//Didn't check this in a compiler so there might be spelling mistakes etc.

Open in new window

0
 
steezaCommented:
Some nasty errors in there, this version is better.
public class Order
    {
 
        private List<OrderLine> _orderLineList = new List<OrderLine>();
 
        public void AddOrderLine(OrderLine orderLine)
        {
         this._orderLineList.Insert(orderLine.LineNumber,orderLine)
        }
 
        public Order GetOrderLine(int index)
        {
         return this._orderLineList[index]);
        }
        
        //add other accessor/modifier methods as appropriate
 
    }

Open in new window

0
 
steezaCommented:
This is what happens when answering questions while being on the phone ;)
public class Order
    {
 
        private List<OrderLine> _orderLineList = new List<OrderLine>();
 
        public void AddOrderLine(OrderLine orderLine)
        {
         this._orderLineList.Insert(orderLine.LineNumber,orderLine)
        }
 
        public OrderLine GetOrderLine(int index)
        {
         return this._orderLineList[index]);
        }
        
        //add other accessor/modifier methods as appropriate
 
    }

Open in new window

0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
WannabeNerdAuthor Commented:
well then how to deserialize it and get orderline items ?
0
 
steezaCommented:
If you are looking for a tutorial on xml deserialization in C# I'm not going to get into that myself. You can find loads of these on the web:

http://mehranikoo.net/CS/archive/2007/02/05/SerialisationAndEncodingInWCF.aspx
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.deserialize(VS.71).aspx

or someone else here might help you.

I was merely giving a suggestion in regards to your class structure based on your statement: "I am not able to write a class for the part below".  

0
 
WannabeNerdAuthor Commented:
Yes i do understand but i want a class which can be serialized and deserialized.
When i read xml it should straight away be deserialized so that i can take data from it.


0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now