Перейти к содержанию
Fire Monkey от А до Я
  • 0

Работа WSDL импортера.


DigriZ

Вопрос

Необходимо добавить в существующий Delphi проект обмен данными с удаленным сервером через  SOAP. WSDL  есть. Столкнулся с тем, что wsdl импортер для Delphi отрабатывает не корректно.
Пример
1. Кусок WSDL

<xs:complexType name="MessagePrimaryContent">
<xs:sequence>
<xs:any namespace="##other" processContents="skip"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
</xs:complexType>

2. Сформированный wsdl импортером Delphi-класс для вышеуказанного куска.

  MessagePrimaryContent = class(TRemotable)
  private
    Fid: string;
    Fid_Specified: boolean;
    procedure Setid(Index: Integer; const Astring: string);
    function  id_Specified(Index: Integer): boolean;
  published
    property id: string  Index (IS_ATTR or IS_OPTN) read Fid write Setid stored id_Specified;
  end;

3. С# класс для него же
 

    public partial class MessagePrimaryContent : object, System.ComponentModel.INotifyPropertyChanged {
        private System.Xml.XmlElement anyField;
        private string idField;
        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute(Order=0)]
        public System.Xml.XmlElement Any {
            get {
                return this.anyField;
            }
            set {
                this.anyField = value;
                this.RaisePropertyChanged("Any");
            }
        }
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute(DataType="ID")]
        public string id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
                this.RaisePropertyChanged("id");
            }
        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

После импорта в Delphi никакого упоминания об элементе Any нет, в отличии от С#. Может у кого были похожие проблемы?? Или кто нибудь знает альтернативный вариант WSDL -импортера.?
Уж очень не хочется разбирать XML вручную.
P.S. Импорт тестировался на d7, XE1, XE10.1 - результат одинаков.

Изменено пользователем DigriZ
Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...