我已经尝试过所有无法反序列化此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>
这是我反序列化的方式
[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; }
}
问题是我得到第一组项目的一行。但是当我删除
[XmlArray("price")]
[XmlArrayItem("list-a")]
public List<string> price { get; set; }
它给了我所有的行。我已经尝试了很多东西,看看其他一些与此相关的问题,但是我无法让它发挥作用。
我能从中得到一些东西的唯一方法就是使用上面的代码。
我非常感谢能得到的所有帮助!
答案 0 :(得分:6)
试试这个。这是工作。我测试了它:
[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; }
}
和反序列化代码:
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);
}
}
修改强>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class items
{
[XmlElementAttribute("item")]
public itemsItem[] item { get; set; }
}
希望最终修改:)
根据您的.xml,试试这个。它适用于:http://www.kbbs.se/get_item.xml我已经测试过了。
[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;}
}
祝你好运:)