<PurchaseInfo>
<FormQuality>5</FormQuality>
<PurchaseForm>
<SkuQuality>1</SkuQuality>
<PurchaseType>0</PurchaseType>
<PurchaseCode>030</PurchaseCode>
<PurchaseTime>2012-03-18 09:00:00;2012-03-18 12:00:00</PurchaseTime>
<PurchaseDetail>
<BarCode>693</BarCode>
<SKU>1002</SKU>
<Developid>103</Developid>
<ProductName>短袖T恤</ProductName>
<Size>S</Size>
<Amount>1</Amount>
<SellPrice>135.00</SellPrice>
</PurchaseDetail>
</PurchaseForm>
<PurchaseForm>
<SkuQuality>4999</SkuQuality>
<PurchaseType>1</PurchaseType>
<PurchaseCode>0301</PurchaseCode>
<PurchaseTime>2012-03-18 09:00:00;2012-03-18 12:00:00</PurchaseTime>
<PurchaseDetail>
<BarCode>69345</BarCode>
<SKU>1002</SKU>
<Developid>1036</Developid>
<ProductName>印花短袖T恤</ProductName>
<Size>M</Size>
<Amount>4999</Amount>
<SellPrice>103.00</SellPrice>
</PurchaseDetail>
</PurchaseForm>
</PurchaseInfo>
实体的定义
[Serializable]
public class PurchaseInfo
{
public string FormQuality;
}
[Serializable]
public class PurchaseForm
{
public string SkuQuality;
public string PurchaseType;
public string PurchaseCode;
public string PurchaseTime;
public List<PurchaseDetail> PurchaseDetail;
}
[Serializable]
public class PurchaseDetail
{
public string BarCode;
public string SKU;
public string Developid;
public string ProductName;
public string Size;
public string Amount;
public string SellPrice;
}
这样的xml 怎样转换成List?
实体的结构是什么样的,怎么FormQuality只有一个?
实体已补上,FormQuality 是一个节点,PurchaseForm 可能会很多。
先轉換成dataset,然後 再轉換成list
你这样的xml的格式有什么特点?要转成的实体结构是什么样的?
这个xml 特点是FormQuality 有一个,然后PurchaseForm 会有多个,关键这个xml特殊之处在于,不能序列化成对象,因为PurchaseForm 的外层没有PurchaseForms,如果有PurchaseForms 就可以序列化成对象了,所以。。。。
@lingxiayidu: 那我就郁闷了,既然你说只要有PurchaseForms就可以序列化为对象,那为什么不先用代码给xml加个PurchaseForms,然后再反序列化为对象,其它操作不就简单了么。否则的话,要用linq to xml或其它的xml解析方法,我看了PurchaseForm中的节点个数也不一样,所以判断什么的一大堆,很麻烦的。
@LCM: 是的,由于这个xml不是我能控制的,要不然就序列化成对象了。按您的意思,在拿到这个xml的时候怎么加上PurchaseForms呢?
@lingxiayidu: 其實,主要看你的這個xml,是不是符合規範。如果 符合,就直接用dataset 讀取,然後再轉換成實體。如果沒有規範,只能自己讀 xml,根據 自己定義的類型,進行轉換了。如果符合規範,必須有xsd文件。明白了嗎?
通过反序列化,参考代码如下:
Type t = null;
System.Xml.XmlNode node = null;
XmlSerializer ser = new XmlSerializer(t);
ser.Deserialize(new XmlNodeReader(node ));
是个好方法,但是能说的具体点吗?node是xml的节点吧,t是什么啊,是xml相对性的实体,还是就是你说的null啊。
Linq中也有对XML(XDocument)操作的支持,使用更简便!可以参考参考。。。