У меня есть xml, который снабжен универсальными атрибутами (имя, тип и т. Д.), Где значение атрибута должно быть свойством, в которое дескрипциализируется xml.Deserializing с общими атрибутами XML
Образец типа XML я пытаюсь нажать на класс будет:
<root>
<company>
<location>USA</location>
<name>TopCars</name>
</company>
<CarList name="CarCounts">
<ModelList name="Models">
<Column name="Ford">50</Column>
<Column name="Chevy">65</Column>
<Column name="Dodge">75</Column>
</ModelList>
</CarList>
</root>
Я могу предоставить некоторые примеры кода я использовал, но он не работает, и я d как некоторые свежие перспективы. Я использовал xmlReader, десериализованный классом, который имел одно свойство, идентифицированное атрибутом «имя», которое не так, как я хочу. В конечном итоге я хочу, чтобы модели классов, которые содержат свойства Ford, Chevy и Dodge (это составленный пример, если вы возражаете против структуры автомобиля здесь).
XSD выплевывает что-то вроде этого, которое вроде того, что я ожидал бы, но не совсем то, что я хочу:
[...]
<xs:element name="Column" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="Column_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
[...]
Я не ограничен этим способом. Я развиваюсь на C#.
Любая помощь приветствуется.
@ RichardTowers: Я пробовал следующее с указанным xml и получил ошибку «В документе XML есть ошибка (1, 2)».
Base.Root[] cars = null;
XmlSerializer serializer = new XmlSerializer(typeof(Base.Root[]));
XmlReader reader = XmlReader.Create(new StringReader(xml));
cars = (Base.Root[])serializer.Deserialize(reader);
reader.Close();
Я попытался изменить классы вы предложили с xmlElementAttribute декораторов, добавив «» в начале xmlString. Я также попытался отключить StringReader с StreamReader безрезультатно. Любые другие предложения?
Является ли формат XML под вашим контролем или вы используете XML из внешнего источника? – gilly3
xml полностью вышел из-под контроля. – John
Я добавил пастебин с примером того, как вы можете это сделать. Вы заметите, что это немного кошмар. Это связано с тем, что ваш XML не похож на данные, которые вы хотите представить. – RichardTowers