У меня возникла ошибка при попытке десериализовать xml в класс в .NET. Я взял файл xml и создал из него xsd с помощью инструментов .net xsd. Затем я создал класс из xsd, созданного с помощью того же инструмента.
Я получаю это исключение: «Объект не может быть сохранен в массиве этого типа» и «В XML-документе есть ошибка (8, 144)». В этой строке в xml я получил это:
<events>
<event assist="" assistid="" extra_min="" id="21775794" minute="87" player="O. Atia" playerid="" result="[0 - 1]" team="away" type="goal"/>
</events>
это сгенерированное свойство С#:
[System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("event", typeof(livescoreLeagueMatchEventsEvent), Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
public livescoreLeagueMatchEventsEvent[][] events {
get {
return this.eventsField;
}
set {
this.eventsField = value;
}
}
это код разбора:
XmlSerializer deserializer = new XmlSerializer(typeof(T));
using (XmlReader reader = XmlReader.Create(path))
{
return (T)deserializer.Deserialize(reader);
}
Это сгенерированный xsd:
<xs:element name="events" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="assist" type="xs:string" />
<xs:attribute name="assistid" type="xs:string" />
<xs:attribute name="extra_min" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="minute" type="xs:string" />
<xs:attribute name="player" type="xs:string" />
<xs:attribute name="playerid" type="xs:string" />
<xs:attribute name="result" type="xs:string" />
<xs:attribute name="team" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Я думал, что инструменты xsd создают правильную структуру классов, и думал, что она будет работать без каких-либо изменений в коде. Безуспешно пытался войти в метод десериализации сериализатора...
livescoreLeagueMatchEventsEvent[]
- person furier   schedule 11.04.2015