1

このような .xsd スキーマを使用しています

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Scene">
<xs:complexType>
  <xs:sequence>
    <xs:element name="SceneName" type="xs:string" minOccurs="0" maxOccurs="1" />
    <xs:element name="PlayerName" type="xs:string" minOccurs="0" maxOccurs="1" />  
    <xs:element name="Button" minOccurs="0" maxOccurs="unbounded" >
      <xs:complexType>
        <xs:sequence>
          <xs:element name="ButtonText" type="xs:string" minOccurs="0" maxOccurs="1" />
          <xs:element name="NextScene" type="xs:string" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
 </xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
 <xs:complexType>
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element ref="Scene" />
  </xs:choice>
  </xs:complexType>
 </xs:element>
</xs:schema>

これは、Visual Studio の xsd.exe によって自動生成されました。次に、xsd2code を使用して .designer.cs ファイルにします。xsd2code を設定して、シリアライザーを作成し、複雑な型構造を配列に作成します。

xsd2codeWindow

ここで、xml をデシリアライズしてシーンファイルを作成します。maxoccurence=1 および minoccurence=0 に設定されている限り、サブオブジェクトがあっても、playername などのサブオブジェクトはすべて正しいです。上記の例のボタンのような配列を除いて、次のような配列を取得すると思いました: scene.Button[i].Buttontext. まあ、私にはわかりません。ここにスクリーンショットがある理由がわからないだけです。

フェイルパート

彼は IndoexoutofRange エラーをスローします。それで、私は何を間違えましたか?

ここで私のexample.xml

<?xml version="1.0" encoding="utf-8"?>
 <Scene>
  <SceneName>SceneName1</SceneName>
   <PlayerName>PlayerName1</PlayerName>
   <Button>
    <ButtonText>ButtonText1</ButtonText>
    <NextScene>NextScene1</NextScene>
   </Button>
4

1 に答える 1

3

GenerateXMLAttributes を true に設定する必要があります。

于 2012-08-27T09:40:28.683 に答える