Что мне делать, если Delphi неправильно импортирует WSDL из-за дефиса в имени перечисления?

Я использую Delphi, и я использую файл wsdl от другой компании, чтобы настроить мой прокси-класс для использования их данных из их веб-службы. Файл 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>

Когда я генерирую прокси-класс, я получаю следующее:

  departStatus = (
      DEPARTED, 
      [System.Xml.Serialization.XmlEnumAttribute('NOT-DEPARTED')]
      NOTDEPARTED);

Который не компилируется, пока я не удалю строку, начинающуюся с [System.xml ..., и он не распознает " NOT-DEPARTED "как допустимое значение для leaveStatus. Если я изменю "NOT-DEPARTED" на "NOT_DEPARTED" в wsdl-файле и любом входящем xml-файле, он будет работать нормально, но компания, которая это установила, настаивает на том, что "NOT-DEPARTED" является действительным и не будет его менять. Почему неправильно настроено перечисление leaveStatus? Есть идеи, как это обойти? Заранее благодарим за любую помощь.

7
задан Rob Kennedy 4 May 2011 в 12:58
поделиться