C# プロジェクトの場合、API にクエリを実行すると、次のような XML が返されます。
<itemlist>
<item attrib1="Value1" attrib2="Value2"... attrib15="Value15">
<sometypeinfo1 attrib1="Value1" attrib2="Value2"... attrib15="Value15">
<subelement>
<someproperty attrib1="Value1" attrib2="Value2"/>
<someproperty attrib1="Value1" attrib2="Value2"/>
<someproperty attrib1="Value1" attrib2="Value2"/>
</subelement>
</sometypeinfo1>
<sometypeinfo2>
<subelement attrib1="Value1" attrib2="Value2">
<someproperty>
<somedescription attrib1="Value1" attrib2="Value2"/>
<somedescription attrib1="Value1" attrib2="Value2"/>
</someproperty>
</subelement>
</sometypeinfo2>
<sometypeinfo3 attrib1="Value1" attrib2="Value2"/>
<sometypeinfo4>
<someproperty attrib1="Value1" attrib2="Value2"/>
</sometypeinfo4>
<sometypeinfo5>
<someproperty attrib="somevalue"/>
</sometypeinfo5>
<somemodifiers>
<somemodifier attrib1="Value1" attrib2="Value2"/>
<somemodifier attrib1="Value1" attrib2="Value2"/>
<somemodifier attrib1="Value1" attrib2="Value2"/>
</somemodifiers>
<someflags>
<someflag attrib="somevalue"/>
<someflag attrib="somevalue"/>
<someflag attrib="somevalue"/>
</someflags>
</item>
<item>
.
.
.
</item>
</itemlist>
その基本的には、1 ファイルあたり 100 項目までのリストであり、すべての項目に多くの説明、属性などが含まれています。これは珍しいことではありません。クラスまたはデータセットへのマッピングに問題があります。たとえば、この行
<sometypeinfo1 attrib1="Value1" attrib2="Value2"... attrib15="Value15">
1 つの項目には attrib1 がなく、別の項目には attrib2 がなく、3 番目の項目には 15 個すべてが含まれている場合があります。
「someflags」と同様に、5 つの「someflag」を持つ 1 つのアイテム、2 つだけの次のアイテムなどがあります。すべての要素または属性が存在する可能性がありますが、そうである必要はありません。そのため、それらはすべて要素/属性のプールを共有しており、これがシリアル化などで行き詰まる場所です。
はい、私はこれが初めてです。しかし、これまでに学んだことから、XML を適切にマッピングするには、スキーマにすべての要素/属性が必要ですか?
頭に浮かぶ唯一のことは、すべての可能な要素などを収集する別のツールを作成し、最初にすべてを NULL にするクラスを作成し、XML を解析して、実際の項目で見つかったすべてを上書きすることです。