Xsd2code元素被list取代

本文关键字:取代 list 元素 Xsd2code | 更新日期: 2023-09-27 18:09:27

我的*中有以下代码。xsd文件

  <xs:element name="node">
    <xs:complexType>
      <xs:sequence>
        ...
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="foo">
    <xs:complexType>
      <xs:sequence>
        <!-- this should be lists of bar and baz and NOT of node -->
        <xs:element ref="bar" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="baz" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="bar">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="baz">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

但是当我用xsd2code生成这段代码时,我得到了一些奇怪的输出,其中foo中的bar和baz属性是节点列表。我需要bar和baz作为保存节点列表的类。我该怎么做?

public partial class foo { // generated class
    private List<node> barField; // ?!
    private List<node> bazField; // ?!
    // ...
}

Xsd2code元素被list取代

找到了解决问题的方法。我只需要设置mixed="true"。下面是代码:

  ...
  <xs:element name="bar">
    <xs:complexType mixed="1">
      <xs:sequence>
        <xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  ...

public partial class foo { // generated class
        private List<bar> barField;
        private List<baz> bazField;
        // ...
}
相关文章: