Reputation: 11
I have tried everything cant deserialize this XML document.
<items>
<item>
<id>00175565</id>
<descr>KJAAM-EMC 16x(2+1)x0,5 T500</descr>
<unit>st</unit>
<vat>25</vat>
<inprice>374</inprice>
<isstock>0</isstock>
<stock>0</stock>
<paccount/>
<ean>00175565</ean>
<type>1</type>
<producer/>
<producer_itemno>00175565</producer_itemno>
<package_height/>
<package_depth/>
<package_width/>
<package_weight/>
<stock_place/>
<stock_warning/>
<note/>
<bulky>0</bulky>
<omit>0</omit>
<available>0</available>
<account>3041</account>
<constracct>3231</constracct>
<exportacct>3315</exportacct>
<eurevacct>3318</eurevacct>
<euvatacct>3316</euvatacct>
<supplierno/>
<show_in_webshop>0</show_in_webshop>
<price>
<list-a>
<from-0>486.2</from-0>
</list-a>
</price>
</item>
</items>
This is how i deserialize it
[Serializable()]
public class item
{
[System.Xml.Serialization.XmlElement("id")]
public string ID { get; set; }
[System.Xml.Serialization.XmlElement("descr")]
public string Descr { get; set; }
[System.Xml.Serialization.XmlElement("unit")]
public string Unit { get; set; }
[System.Xml.Serialization.XmlElement("vat")]
public string Vat { get; set; }
[System.Xml.Serialization.XmlElement("inprice")]
public string Inprice { get; set; }
[System.Xml.Serialization.XmlElement("isstock")]
public string Isstock { get; set; }
[System.Xml.Serialization.XmlElement("stock")]
public string Stock { get; set; }
[System.Xml.Serialization.XmlElement("paccount")]
public string Paccount { get; set; }
[System.Xml.Serialization.XmlElement("ean")]
public string Ean { get; set; }
[System.Xml.Serialization.XmlElement("type")]
public string Type { get; set; }
[System.Xml.Serialization.XmlElement("producer")]
public string Producer { get; set; }
[System.Xml.Serialization.XmlElement("producer_itemno")]
public string Producer_itemno { get; set; }
[System.Xml.Serialization.XmlElement("package_height")]
public string Package_height { get; set; }
[System.Xml.Serialization.XmlElement("package_depth")]
public string Package_depth { get; set; }
[System.Xml.Serialization.XmlElement("package_width")]
public string Package_width { get; set; }
[System.Xml.Serialization.XmlElement("package_weight")]
public string Package_weight { get; set; }
[System.Xml.Serialization.XmlElement("stock_place")]
public string Stock_place { get; set; }
[System.Xml.Serialization.XmlElement("stock_warning")]
public string Stock_warning { get; set; }
[System.Xml.Serialization.XmlElement("note")]
public string Note { get; set; }
[System.Xml.Serialization.XmlElement("bulky")]
public string Bulky { get; set; }
[System.Xml.Serialization.XmlElement("omit")]
public string Omit { get; set; }
[System.Xml.Serialization.XmlElement("available")]
public string Available { get; set; }
[System.Xml.Serialization.XmlElement("account")]
public string Account { get; set; }
[System.Xml.Serialization.XmlElement("constracct")]
public string Constracct { get; set; }
[System.Xml.Serialization.XmlElement("exportacct")]
public string Exportacct { get; set; }
[System.Xml.Serialization.XmlElement("eurevacct")]
public string Eurevacct { get; set; }
[System.Xml.Serialization.XmlElement("euvatacct")]
public string Euvatacct { get; set; }
[System.Xml.Serialization.XmlElement("supplierno")]
public string Supplierno { get; set; }
[System.Xml.Serialization.XmlElement("show_in_webshop")]
public string Show_in_webshop { get; set; }
[XmlArray("price")]
[XmlArrayItem("list-a")]
public List<string> price { get; set; }
}
[XmlRoot("items")]
public class items
{
[XmlElement("item")]
public item[] item { get; set; }
}
The problem is that i get one row of the first set of item. but when i remove
[XmlArray("price")]
[XmlArrayItem("list-a")]
public List<string> price { get; set; }
it gives me all the rows. I have tried alot of things and look on some other posted questions equal to this but i cant get it to work.
the only way for me to get something at all from is to use the code above.
I greatly appreciate all the help i can get!
Upvotes: 2
Views: 7234
Reputation: 16920
Try this. It is working. I have tested it:
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class items
{
public itemsItem item { get; set; }
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItem
{
public uint id { get; set; }
public string descr { get; set; }
public string unit { get; set; }
public byte vat { get; set; }
public ushort inprice { get; set; }
public byte isstock { get; set; }
public byte stock { get; set; }
public object paccount { get; set; }
public uint ean { get; set; }
public byte type { get; set; }
public object producer { get; set; }
public uint producer_itemno { get; set; }
public object package_height { get; set; }
public object package_depth { get; set; }
public object package_width { get; set; }
public object package_weight { get; set; }
public object stock_place { get; set; }
public object stock_warning { get; set; }
public object note { get; set; }
public byte bulky { get; set; }
public byte omit { get; set; }
public byte available { get; set; }
public ushort account { get; set; }
public ushort constracct { get; set; }
public ushort exportacct { get; set; }
public ushort eurevacct { get; set; }
public ushort euvatacct { get; set; }
public object supplierno { get; set; }
public byte show_in_webshop { get; set; }
public itemsItemPrice price { get; set; }
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPrice
{
[System.Xml.Serialization.XmlElementAttribute("list-a")]
public itemsItemPriceLista lista { get; set; }
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPriceLista
{
private decimal from0Field;
[System.Xml.Serialization.XmlElementAttribute("from-0")]
public decimal from0 { get; set; }
}
and the deserialization code:
string xml = @"<items>
<item>
<id>00175565</id>
<descr>KJAAM-EMC 16x(2+1)x0,5 T500</descr>
<unit>st</unit>
<vat>25</vat>
<inprice>374</inprice>
<isstock>0</isstock>
<stock>0</stock>
<paccount/>
<ean>00175565</ean>
<type>1</type>
<producer/>
<producer_itemno>00175565</producer_itemno>
<package_height/>
<package_depth/>
<package_width/>
<package_weight/>
<stock_place/>
<stock_warning/>
<note/>
<bulky>0</bulky>
<omit>0</omit>
<available>0</available>
<account>3041</account>
<constracct>3231</constracct>
<exportacct>3315</exportacct>
<eurevacct>3318</eurevacct>
<euvatacct>3316</euvatacct>
<supplierno/>
<show_in_webshop>0</show_in_webshop>
<price>
<list-a>
<from-0>486.2</from-0>
</list-a>
</price>
</item>
</items>
";
XmlSerializer serializer = new XmlSerializer(typeof(items));
using (StringReader stringReader = new StringReader(xml))
{
using (XmlTextReader textReader = new XmlTextReader(stringReader))
{
items items = (items)serializer.Deserialize(textReader);
}
}
Edit:
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class items
{
[XmlElementAttribute("item")]
public itemsItem[] item { get; set; }
}
Hopefully final edit :)
Based on your .xml, try this. It works with: http://www.kbbs.se/get_item.xml I've tested it.
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class items
{
[System.Xml.Serialization.XmlElementAttribute("item")]
public itemsItem[] item {get; set;}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItem
{
public string id{get; set;}
public string descr{get; set;}
public string unit{get; set;}
public string vat{get; set;}
public decimal inprice{get; set;}
public byte isstock{get; set;}
public sbyte stock{get; set;}
public object paccount{get; set;}
public string ean{get; set;}
public byte type{get; set;}
public string producer{get; set;}
public string producer_itemno{get; set;}
public object package_height{get; set;}
public object package_depth{get; set;}
public object package_width{get; set;}
public object package_weight{get; set;}
public object stock_place{get; set;}
public string stock_warning{get; set;}
public object note{get; set;}
public byte bulky{get; set;}
public byte omit{get; set;}
public sbyte available{get; set;}
public ushort account{get; set;}
public ushort constracct{get; set;}
public ushort exportacct{get; set;}
public ushort eurevacct{get; set;}
public ushort euvatacct{get; set;}
public object supplierno{get; set;}
public byte show_in_webshop{get; set;}
public itemsItemPrice price{get; set;}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPrice
{
[System.Xml.Serialization.XmlElementAttribute("list-")]
public itemsItemPriceList list{get; set;}
[System.Xml.Serialization.XmlElementAttribute("list-a")]
public itemsItemPriceLista lista{get; set;}
[System.Xml.Serialization.XmlElementAttribute("list-w")]
public itemsItemPriceListw listw { get; set; }
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPriceList
{
[System.Xml.Serialization.XmlElementAttribute("from-")]
public object from{get; set;}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPriceLista
{
[System.Xml.Serialization.XmlElementAttribute("from-0")]
public decimal from0{get; set;}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class itemsItemPriceListw
{
[System.Xml.Serialization.XmlElementAttribute("from-0")]
public byte from0{get; set;}
}
Good luck :)
Upvotes: 6