首页 新闻 搜索 专区 学院

真心求助 xml转List问题 急急急!!!

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-04-24 14:58

<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?

lingxiayidu的主页 lingxiayidu | 初学一级 | 园豆:31
提问于:2012-03-21 09:42
< >
分享
所有回答(5)
0

实体的结构是什么样的,怎么FormQuality只有一个?

artwl | 园豆:16526 (专家六级) | 2012-03-21 09:52

实体已补上,FormQuality 是一个节点,PurchaseForm  可能会很多。

支持(0) 反对(0) lingxiayidu | 园豆:31 (初学一级) | 2012-03-21 10:18
0

先轉換成dataset,然後 再轉換成list

無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-21 09:52
0

你这样的xml的格式有什么特点?要转成的实体结构是什么样的?

LCM | 园豆:6876 (大侠五级) | 2012-03-21 09:59

这个xml 特点是FormQuality 有一个,然后PurchaseForm 会有多个,关键这个xml特殊之处在于,不能序列化成对象,因为PurchaseForm 的外层没有PurchaseForms,如果有PurchaseForms 就可以序列化成对象了,所以。。。。

支持(0) 反对(0) lingxiayidu | 园豆:31 (初学一级) | 2012-03-21 10:20

@lingxiayidu: 那我就郁闷了,既然你说只要有PurchaseForms就可以序列化为对象,那为什么不先用代码给xml加个PurchaseForms,然后再反序列化为对象,其它操作不就简单了么。否则的话,要用linq to xml或其它的xml解析方法,我看了PurchaseForm中的节点个数也不一样,所以判断什么的一大堆,很麻烦的。

支持(0) 反对(0) LCM | 园豆:6876 (大侠五级) | 2012-03-21 10:23

@LCM: 是的,由于这个xml不是我能控制的,要不然就序列化成对象了。按您的意思,在拿到这个xml的时候怎么加上PurchaseForms呢?

支持(0) 反对(0) lingxiayidu | 园豆:31 (初学一级) | 2012-03-21 10:53

@lingxiayidu: 其實,主要看你的這個xml,是不是符合規範。如果 符合,就直接用dataset 讀取,然後再轉換成實體。如果沒有規範,只能自己讀 xml,根據 自己定義的類型,進行轉換了。如果符合規範,必須有xsd文件。明白了嗎?

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-21 12:48
0

通过反序列化,参考代码如下:

Type t = null;
System.Xml.XmlNode node = null;
XmlSerializer ser = new XmlSerializer(t);
ser.Deserialize(new XmlNodeReader(node ));
dudu | 园豆:38814 (高人七级) | 2012-03-21 10:37

是个好方法,但是能说的具体点吗?node是xml的节点吧,t是什么啊,是xml相对性的实体,还是就是你说的null啊。

支持(0) 反对(0) rains | 园豆:860 (小虾三级) | 2012-03-21 14:12
0

Linq中也有对XML(XDocument)操作的支持,使用更简便!可以参考参考。。。

kaleyroy | 园豆:160 (初学一级) | 2012-03-21 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册