Возможно проверить xml против xsd, используя код Objc / iPhone во время выполнения - PullRequest
5 голосов
/ 20 января 2012

У меня есть XML-файлы, которые я читаю во время выполнения, возможно ли проверить xml на файл xsd во время выполнения, используя Obj C ??Это можно сделать в java и c # .. Но мне нужно сделать это во время выполнения в моем приложении для iPhone.

Ответы [ 3 ]

6 голосов
/ 20 января 2012

Я не думаю, что вы можете сделать это с помощью Obj C на iOS.Я думаю, вам нужно использовать libxml2.

Вот пример простой программы на C, которая проверяет XML на соответствие XSD.

Вот инструкции по добавлениюlibxml2 в проект XCode.

1 голос
/ 26 апреля 2015

в objC Api для iOS нет sdks для этого. Для этого вам нужно перейти непосредственно к использованию C API libxml.

  1. вы загружаете xml (например, xmlReadMemory)
  2. тогда для XSD вы бы использовали xmlSchemaValidateDoc

или вы можете использовать следующий класс-оболочку [заявление об отказе: я автор]:
DDXMLValidator (часть моих помощников @ https://github.com/Daij-Djan/DDUtils/)

//validate
NSError *error = nil;
NSURL *schemaURL = [[NSBundle mainBundle] URLForResource:@"XMLSchema" withExtension:@"xsd"];
if(![[SNXMLValidator sharedInstace] validateXMLData:xmlData withSchema:SNXMLValidatorSchemaTypeXSD schemaFile:schemaURL error:&error]) {
    DebugLog(@"Failed to validate data: %@", error);
}

класс может выполнять DTD, XSD, RelaxNG (он просто оборачивает libxml2)

1 голос
/ 24 января 2012

CodeSynthesis XSD / e должен поддерживать iPhone (внутри пакета Mac)


Редактировать # 1: Инструкция по настройке

Чтобы построить библиотеку времени выполнения XSD / e (libxsde.a), выполните следующие действия:

  1. Распакуйте предварительно скомпилированный пакет XSD / e для Mac OS X.

  2. Запустите новое окно терминала и выполните следующие команды:

    cd xsde-3.2.0-i686-macosx

    cp etc/ios/config-xcode.make config/config.make

    Не закрывайте терминал.

  3. Редактировать config/config.make и настроить конфигурацию XSD / e в соответствии с вашими потребностями. требования.

  4. В терминале выполните:

    cd libxsde

    make

    Если команда make не найдена, попробуйте / Developer / usr / bin / make (или ваш альтернативный каталог установки XCode).

  5. Запустите XCode и выполните следующие шаги:

    5.1 Выберите «Файл» -> «Новый проект»

    5.2 В открывшемся диалоговом окне выберите «Библиотека iOS» -> «Какао Touch Static» Библиотека ". Нажмите" Выбрать ... ".

    5.3 В следующем диалоговом окне введите libxsde в поле «Сохранить как» и перейдите в каталог xsde-3.2.0-i686-macosx. Нажмите «Сохранить».

    5.4 Далее вы должны увидеть диалоговое окно с предупреждением о том, что каталог libxsde уже существует. Это ожидается, поэтому нажмите «Заменить».

    5.5 В окне проекта в списке «Группы и файлы» выберите «Другое». Группа «Источники», затем выберите «Проект» -> «Добавить в проект ...».

    5.6 В открывшемся диалоговом окне перейдите в каталог xsde-3.2.0-i686-macosx / libxsde и выберите каталог src. Нажмите «Добавить».

    5.7 В следующем диалоговом окне оставьте настройки по умолчанию и нажмите «Добавить». Сейчас Вы должны увидеть несколько исходных файлов (.cxx и .c), перечисленных в Группа "Другие источники".

    5.8 Далее выберите «Проект» -> «Изменить настройки проекта», вкладка «Сборка». в В раскрывающемся списке «Конфигурации» выберите «Все конфигурации».

    5.9 Прокрутите вниз до раздела «Пути поиска» и добавьте. (точка) к Поле «Пути поиска по заголовку».

    5.10 Прокрутите вниз до раздела «GCC 4.2 - Язык» и добавьте -fvisibility = скрытый флаг в поле «Другие флаги C» как флаги -fvisibility = hidden и -fvisibility-inlines-hidden в поле «Другие флаги C ++». Если вы установите какие-либо дополнительные флаги C / C ++ в проекте вашего приложения вы также можете добавить их сюда.

    5.11 Создайте проект для всех требуемых конфигураций (например, Отладка / Выпуск, Устройство / Симулятор, ARMv6 / ARMv7 и т. Д.).

  6. В окне терминала создайте «толстые» библиотеки, выполнив следующие Команды (которые могут потребоваться настроить в зависимости от конфигурации что вы построили):

    cd build

    lipo -output libxsde.a -create Release-iphonesimulator/liblibxsde.a Release-iphoneos/liblibxsde.a

    lipo -output libxsde-d.a -create Debug-iphonesimulator/liblibxsde.a Debug-iphoneos/liblibxsde.a

Если в какой-то момент вам нужно изменить конфигурацию XSD / e, тогда лучше всего начать с нуля (шаг 1 выше), так как набор файлов, который добавляется для проекта XCode может варьироваться от конфигурации к конфигурации.

Как только библиотека времени выполнения построена, для интеграции XSD / e в ваше приложение выполните следующие шаги:

  1. Скомпилируйте ваши схемы в C ++ с помощью компилятора XSD / e (xsde-3.2.0-i686-macosx / bin / xsde) и добавьте полученные сгенерированные файлы C ++ в ваш проект.

  2. Чтобы связать ваше приложение с библиотекой времени выполнения XSD / e (libxsde), выполните следующие шаги в вашем проекте:

    2.1 В группе «Цели» дважды щелкните свое приложение, чтобы открыть Диалог «Информация».

    2.2 Выберите вкладку «Общие» и нажмите кнопку со знаком «Плюс» (+), чтобы добавить библиотека.

    2.3 В открывшемся диалоговом окне нажмите кнопку «Добавить другое ...» и добавьте либо библиотека толстых библиотек libxsde.a или libxsde-d.a (отладка), созданная выше.

  3. Чтобы добавить заголовки времени выполнения XSD / e в пути поиска вашего приложения, Выполните следующие шаги в вашем проекте:

    3.1 Выберите «Проект» -> «Изменить настройки проекта», вкладка «Сборка».В раскрывающемся списке «Конфигурации» выберите «Все конфигурации».

    3.2 Прокрутите вниз до раздела «Пути поиска» и добавьте путь к каталогу xsde-3.2.0-i686-macosx / libxsde вполе «Пути поиска по заголовку».

    3.3 Сборка приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...