当Delphi由于枚举名称中的连字符而导致WSDL导入不正确时,我该怎么办?

Bob*_*ert 7 xml delphi proxy wsdl class

我正在使用Delphi并且我正在使用来自其他公司的wsdl文件来设置我的代理类以使用他们的Web服务中的数据.wsdl文件包含以下内容:

  <xsd:simpleType name="departStatus">
  <xsd:annotation>
   <xsd:documentation>Enumerates allowable departure statuses (DEPARTED, NOT-DEPARTED)</xsd:documentation>
   </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="DEPARTED"/>
   <xsd:enumeration value="NOT-DEPARTED"/>
   </xsd:restriction>
   </xsd:simpleType>
Run Code Online (Sandbox Code Playgroud)

当我生成代理类时,我得到以下内容:

  departStatus = (
      DEPARTED, 
      [System.Xml.Serialization.XmlEnumAttribute('NOT-DEPARTED')]
      NOTDEPARTED);
Run Code Online (Sandbox Code Playgroud)

除非我删除以[System.xml ...开头的行,并且它不会将"NOT-DEPARTED"识别为departStatus的有效值,否则不会编译.如果我在wsdl文件中将"NOT-DEPARTED"更改为"NOT_DEPARTED"并且任何传入的xml文件都可以正常工作,但设置此项的公司坚持认为"NOT-DEPARTED"有效并且不会更改它.为什么没有正确设置departStatus枚举?任何想法如何解决这个问题?在此先感谢您的帮助.

Jen*_*off 1

我有一个可能的解决方法:

由于departStatus是 基本类型xsd:string,因此您应该能够将该departStatus类型的所有出现更改为xsd:stringWSDL 文件中的类型。

这样您就可以传递/解释字符串'DEPARTED''NON-DEPARTED'代替使用枚举。