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 Studios xsd.exe 自动生成的。然后我使用 xsd2code 使其成为 .designer.cs 文件。我设置了 xsd2code,以便它创建序列化程序并为数组创建复杂的类型结构。

xsd2codeWindow

现在我反序列化一个 xml 并创建我的场景文件,我的子对象(如 playername)都是正确的,即使它们有子对象,只要它们设置为 maxoccurence=1 和 minoccurence=0。除了上例中的 Button 之类的数组,我想我会得到一个像这样的数组: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 回答