Использование точечной нотации в веб-сервисе WSDL вызывает ошибки компиляции sudzc - PullRequest
0 голосов
/ 27 февраля 2012

Я надеюсь, что это легко исправить, хотя я ничего не смог найти. Я работаю с файлом WSDL, который содержит некоторые элементы с использованием точечной нотации:

      <xs:element form="qualified" minOccurs="0" name="Status" type="xs:string" />
      <xs:element form="qualified" minOccurs="0" name="Status.Code" type="xs:string" />
      <xs:element form="qualified" minOccurs="0" name="Status.Description" type="xs:string" />

Когда я генерирую код с использованием sudzc, файл выходного заголовка содержит точечную запись:

      NSString* _Status;
      NSString* _Status.Code;
      NSString* _Status.Description;

Что, конечно, не компилируется в Objective C. Это генерируемый код, я надеюсь, что есть простой / автоматизированный способ исправить это (вместо того, чтобы вручную обновлять, используя подчеркивание или что-то еще) Есть предложения?

Заранее спасибо,

Дэмиен

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

У меня была такая же проблема, и мой ответ очень неэффективен. Я грубо заставил и изменил имя классов или, в вашем случае, имена переменных по одной и их ссылки внутри кодов. Я попробовал много гуглить без удачи.

Надеюсь, если кто-нибудь найдет для тебя подход.

Удачи!

1 голос
/ 27 февраля 2012

Я не думаю, что вы найдете простой способ исправить это.XML-схемы, которые включают элементы с "."в имени, как известно, проблематично с автоматически сгенерированным кодом и языками, которые пытаются легче ориентироваться в структурах XML.

Я вступил в бурные споры об этом с архитекторами данных в моей компании, которые настаивают на использовании точечных обозначений в своих именах XML, несмотря на то, что разработчикам становится труднее писать код манипуляции XML и труднеегенераторы кода для генерации корректного кода заглушки.

Если у вас есть какая-либо возможность влиять на схему, используемую в ваших сервисах, сделайте все возможное, чтобы удалить точки из имен элементов.Если вы не можете изменить это, вы, вероятно, застрянете с ручным изменением всего сгенерированного кода.

...