0

I generate C# classes for this XSD schema using xsd.exe or Xsd2Code:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="student" type="personinfo"/>
  <xs:element name="employee" type="personinfo"/>

  <xs:complexType name="personinfo">
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

I get similar results in both cases:

...
[System.Xml.Serialization.XmlRootAttribute("student", Namespace="", IsNullable=false)]
public partial class personinfo 
{
    ...
    public string firstname { ... }
    public string lastname { ... }
}

It seems strange to me that employee is not referenced anywhere and that some information is lost after code generation. For example, if I look at the generated code it is not obvious that this XML can be created:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Why is information about schema elements not included into the generated code? Are there any other tools that can somehow save this information in the generated classes?

4

1 回答 1

0

在您实际使用它们之前,它们不会被引用。尝试这样的事情:

<xs:complexType name="PersonInfo">
<xs:sequence>
<xs:element name="student" type="personinfo"/>
<xs:element name="employee" type="personinfo"/>
</xs:sequence>
</xs:complexType>
于 2016-01-05T08:10:17.760 回答