将忽略从XSD模式元素生成C#类

本文关键字:元素 模式 XSD | 更新日期: 2023-09-27 18:29:02

我使用XSD.exe或Xsd2Code:为该XSD架构生成C#类

<?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>

我在这两种情况下都得到了类似的结果:

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

employee在任何地方都没有被引用,并且在代码生成后丢失了一些信息,这对我来说似乎很奇怪。例如,如果我查看生成的代码,就不清楚是否可以创建这个XML:

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

为什么生成的代码中没有包含有关模式元素的信息?有没有其他工具可以以某种方式将这些信息保存在生成的类中?

将忽略从XSD模式元素生成C#类

在您实际使用它们之前,它们一直未被引用。试试这样的东西:

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