一般的な属性 (名前、タイプなど) が指定された xml があります。属性の値は、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>
私が使用したいくつかのサンプル コードを提供できますが、機能せず、いくつかの新しい見通しが必要です。とにかく欲しいものではない属性「名前」で識別される単一のプロパティを持つクラスによってデシリアライズされた xmlReader を使用していました。最終的には、Ford、Chevy、および Dodge のプロパティを含む Class Models のようなものが必要です (ここで車の構造に反対する場合、これはでっち上げの例です)。
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 に切り替えてみましたが、役に立ちませんでした。他の提案はありますか?