Десериализация элемента массива - PullRequest
1 голос
/ 15 октября 2010

У меня есть что-то вроде следующего XML, которое мне нужно десериализовать (обратите внимание, я не могу изменить XML):

<Root>
  <Products>
    <Product>1</Product>
    <Product>2</Product>
    <Product>3</Product>
  </Products>               
</Root>

Вот как я пытаюсь десериализовать его:

[XmlRoot("Root")]
public class ProductsResponse
{
  [XmlElement("Products", typeof(MyProduct[]))]
  public MyProduct[] Products;
}

Проблема в том, что он не будет десериализован, потому что, когда он попадает в Product, он сравнивает это имя элемента с типом моего массива, которым является MyProduct.Можно ли как-нибудь десериализовать в класс, который не называется Product?Я хотел бы избежать переименования моего класса MyProduct, если это возможно.

1 Ответ

2 голосов
/ 15 октября 2010

Попробуйте использовать XMLElement: http://msdn.microsoft.com/en-us/library/2baksw0z%28VS.71%29.aspx

Позже отредактируйте: я ошибся ... используйте XmlArray и XmlArrayItemAttribute

[XmlArray(ElementName = "Products")]
[XmlArrayItem("Product")]
    public MyProduct[] Products;

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayattribute.aspx http://msdn.microsoft.com/en-us/library/2baksw0z%28VS.80%29.aspx

...