Question

I have a class like this;

 public class Orderinfo
            {
                public string billing_company { get; set; }
                public string delivery_company { get; set; }
                public string delivery_phone { get; set; }
                public string orderid { get; set; }
                public string email_address { get; set; }
                public string delivery_firstname { get; set; }
                public string delivery_lastname { get; set; }
                public string delivery_street_address { get; set; }
                public string delivery_city { get; set; }
                public string delivery_state { get; set; }
                public string delivery_postcode { get; set; }
                public string giftwrap_type { get; set; }
                public string billing_firstname { get; set; }
                public string billing_lastname { get; set; }
                public string billing_street_address { get; set; }
                public string billing_city { get; set; }
                public string billing_state { get; set; }
                public string billing_postcode { get; set; }
                public string billing_phone { get; set; }
                public string transaction_id { get; set; }
                public string shippingtype { get; set; }
                public string cc_type { get; set; }
                public string personal_note { get; set; }
            }

            public class Ordertotals
            {
                public string shipping { get; set; }
                public string subtotal { get; set; }
                public string tax { get; set; }
                public string discount { get; set; }
                public string total { get; set; }
            }

            public class Product
            {
                public string product_id { get; set; }
                public string product_sku { get; set; }
                public string product_quantity { get; set; }
                public string product_price { get; set; }
                public string product_name { get; set; }
            }

            public class Orderproducts
            {
                public List<Product> product { get; set; }
            }

            public class Order
            {
                public Orderinfo orderinfo { get; set; }
                public Ordertotals ordertotals { get; set; }
                public Orderproducts orderproducts { get; set; }
            }

when I serialize this class with following function;

public class Utf8StringWriter : StringWriter
        {
            public override Encoding Encoding
            {
                get { return Encoding.UTF8; }
            }
        }
        public static string ToXml(object param)
        {
            var stringwriter = new Utf8StringWriter();
            var serializer = new XmlSerializer(param.GetType());
            serializer.Serialize(stringwriter, param);
            return stringwriter.ToString();
    }

I am receiving following output (part of it);

<orderproducts>
    <product>
      <Product>
        <product_id>76</product_id>
        <product_sku>16269</product_sku>
        <product_quantity>1</product_quantity>
        <product_price>15.0000</product_price>
        <product_name>Sesame Street Take along Elmo</product_name>
      </Product>
      <Product>
        <product_id>77</product_id>
        <product_sku>16999-1219</product_sku>
        <product_quantity>1</product_quantity>
        <product_price>20.0000</product_price>
        <product_name>Buddy the Dog - Red</product_name>
      </Product>
    </product>
  </orderproducts>

Actually I want that list of products should start right under orderproducts but it has an extra tag covering other product classes.

Is there any way to ignore this tag? So it should be like;

<orderproducts>   
      <Product>
        <product_id>76</product_id>
        <product_sku>16269</product_sku>
        <product_quantity>1</product_quantity>
        <product_price>15.0000</product_price>
        <product_name>Sesame Street Take along Elmo</product_name>
      </Product>
      <Product>
        <product_id>77</product_id>
        <product_sku>16999-1219</product_sku>
        <product_quantity>1</product_quantity>
        <product_price>20.0000</product_price>
        <product_name>Buddy the Dog - Red</product_name>
      </Product>   
  </orderproducts>
Was it helpful?

Solution

Adding an XmlElement-attribute to the Product class will remove the Products Container. See this article on MSDN.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top