Xsd.exeツールを使用してxsdファイルからクラスを作成すると、このエラーが発生します。そこで、ネットを検索して解決策を見つけました。リンクは次のとおりです。 http://satov.blogspot.com/2006/12/xsdexe-generated-classes-causing.html
問題は、これによりコードが実行されるが、どういうわけかデシリアライズされたデータが破損しているように見えることです。私はサイトが示唆することをしました、そして、結局、2番目の配列次元は常に空です(サイトのコメントを見てください、誰かもこの問題を抱えていました)。質問は、今どのようにこの問題を解決するのですか? xsdファイルを作成する別のツールはありますか? Xsd2Codeを試しましたが、成功しませんでした。
ありがとう:-)
シリアル化されたクラスのメンバー変数の型を変更する必要があります。たとえば、次のようなエラーが発生した場合:
一時クラスを生成できません(result = 1)。エラーCS0030:タイプ 'Data []'を 'Data'に変換できません。
生成されたファイルのデータ型名で検索を実行したところ、次のことがわかりました。
[System.Xml.Serialization.XmlArrayItemAttribute("Data", typeof(Data), IsNullable=false)]
public Data[][] Row
Data[][]
をData[]
に置き換えます-データのタイプを2D配列から1D配列に変更します。それはあなたの問題を解決するでしょう。 :)
同じ問題がありましたが、Xsd2CodeはVS2012と統合しませんでした。代わりに、xsd.exeで生成された.csファイルに移動して、次のことを行いました。
[] []を検索[]を置換
うまくいきました。
私はこのエラーを受け取りました。あなたのソリューションでは、そのファイル内に「[] []」を検索する必要があるreference.csファイルがあり、2つの結果があります。
両方の場所の「[] []」から1つの「[]」を削除する必要がある場合。
わたしにはできる..
ありがとう。
追加 - <xs:attribute name="tmp" type="xs:string" />
毎回<xs:sequence maxOccurs="unbounded"> <xs:element ../> </xs:sequence>
そして<xs:sequence> <xs:element maxOccurs="unbounded"/> </xs:sequence>
スキーマファイルの要素配列の次元を失いたくない場合。
VB.netの場合、Reference.vbで()()を検索し、()で置き換える必要があります。
私にとっては、コードを生成するために使用されるXMLにパッチを適用すると役立ちます。次の場合に発生します。
<Names>
<Name></Name>
<Name></Name>
</Names>
次に、これはxsdによって最適化され、配列名エントリが2倍になります
私がしたことは:
<Names>
<Dummy></Dummy>
<Name></Name>
<Name></Name>
</Names>
xsdは最適化しませんが、単一の配列名を残します
私の場合、問題はXmlArrayItemプロパティ属性の無効な宣言が原因で発生します。
から
[XmlArrayItem("MyArray", typeof(string))]
public List<ClassName> Items{ get; set; }
適切なタイプに変更しました:文字列からClassNameに
[XmlArrayItem("MyArray", typeof(ClassName))]
public List<ClassName> Items{ get; set; }
お役に立てれば!