2011-05-16 15 views
2

我使用xsd從xml文件生成類。它工作正常,但有一部分xml文件沒有按照我的意願生成。xml中的C#類

這裏是XML的示例部分:

<Product> 
    <p0>Stapler</p0> 
    <p1>1.50</p1> 
    <p2>0</p2> 
</Product> 

在已生成形成XML的XSD,我看這部分:

<xs:element name="Product" minOccurs="0" maxOccurs="unbounded"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="p0" type="xs:string" minOccurs="0" /> 
     <xs:element name="p1" type="xs:decimal" minOccurs="0" /> 
     <xs:element name="p2" type="xs:decimal" minOccurs="0" />  
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

這裏的問題是,XML響應我試圖反序列化會在產品部分有不同數量的元素。在上面的例子中,它從p0到p2。其他響應可能從p0到p8。

有沒有辦法讓我生成我的類,以便它可以處理產品的可變數量的元素?

回答

4

你有兩個選擇:

  1. 如果你想保持你的純樸,和元素的順序總是相同類型的(所以它總是字符串,十進制,整型,等等),那麼剛剛生成使用所有產品類型的模式8.

  2. 使您的模式更加複雜,並使「產品」成爲ProductTypes列表(它將定義每種產品是什麼)。

喜歡的東西:

<Product> 
    <ProductType id="name" _type="xs:string"> 
     <Value>Stapler</Value> 
    </ProductType> 
    <ProductType id="cost" _type="xs:decimal"> 
     <Value>1.50</Value> 
    </ProductType> 
    <ProductType id="quantity" _type="xs:decimal"> 
     <Value>0</Value> 
    </ProductType> 
</Product> 

它的XML所以有噸的好辦法做到這一點。