[英]WCF, XML deserialization
我有一個簡單的WCF服務
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(ShoppingCart value);
}
public class ShoppingCart
{
public string name;
[XmlElement("ShoppingCartItem")]
public ShoppingCartItem[] ShoppingCartItems;
}
public class ShoppingCartItem
{
public string Description;
}
和一個簡單的測試控制台。 當我將服務引用添加到測試控制台時,My ShoppingCart類將出現在TestConsole reference.cs文件中。 所以我可以在TestConsole項目上這樣寫:
static void Main(string[] args)
{
ShoppingCart body = new ShoppingCart();
FileStream myFileStream = new FileStream(@"C:\Resources\Xmls\New Folder\shoppingCart.xml", FileMode.Open);
XmlSerializer mySerializer = new XmlSerializer(typeof(ShoppingCart));
ShoppingCart cart = (ShoppingCart)mySerializer.Deserialize(myFileStream);
}
我的shoppingCart.xml文件是這樣的:
<?xml version="1.0"?>
<ShoppingCart>
<name>test</name>
<ShoppingCartItem>
<Description>XBox 360</Description>
</ShoppingCartItem>
<ShoppingCartItem>
<Description>Cell Phone</Description>
</ShoppingCartItem>
</ShoppingCart>
所以,我等着代碼來
ShoppingCart cart = (ShoppingCart)mySerializer.Deserialize(myFileStream);
行,應該有兩個項目。 但似乎是這樣的:
您能否解釋為什么我的列表沒有填寫?
您需要像這樣添加XmlElement屬性:
public class ShoppingCart
{
[XmlElement("ShoppingCartItem")]
public ShoppingCartItem[] ShoppingCartItems;
}
如果可以將Xml文件更改為此結構並刪除XmlElement屬性,則可以選擇
<ShoppingCart>
<name>test</name>
<ShoppingCartItems>
<ShoppingCartItem>
<Description>XBox 360</Description>
</ShoppingCartItem>
<ShoppingCartItem>
<Description>Cell Phone</Description>
</ShoppingCartItem>
</ShoppingCartItems>
</ShoppingCart>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.