Как написать XML с Objective-C и поместить его в объект NSData

Я читал кучу документов ios от Apple, и почти каждый бит кода, связанный с xml, требует либо создания файла с данными xml, либо получения xml через соединение, а затем его изменения.

Я хотел бы знать, если есть способ просто создать xml.. может быть в строке, а затем преобразовать его в объект NSData.. Я знаю, как передать NSString в объект NSData... это не так уж много большое дело.. самая болезненная часть на данный момент - это получить несколько четких кратких примеров того, как создать свой собственный XML без всех других вещей, которые, по словам Apple, вам нужны. Т.е. файл или возврат данных.

В настоящее время у меня нет кода... то, что я, вероятно, сделаю, - это создаю метод с некоторыми параметрами, который может получать некоторую информацию, а затем передавать их, мы надеемся, создать хорошую строку XML / объект данных.

3 ответа

Если вы имеете в виду преобразование объектов Какао в XML, есть множество библиотек, которые можно попробовать. Быстрый Google запустил WonderXML, я не использовал его раньше, но, похоже, это то, что вы хотите.

Если вам не нужен точный формат XML, вы всегда можете использовать NSKeyedArchiver или же NSPropertyListSerialization (как пишет jtbandes), который может сериализовать практически любой объект Какао в XML. Я бы не рекомендовал такой подход, если вы собираетесь читать XML в какой-либо другой среде или на другом языке.

Самым простым способом будет использование NSPropertyListSerialization. Передайте ему словарь (или любой объект списка свойств), и он может создавать XML (в виде строки или данных) в формате списка свойств Apple.

Ты можешь использовать:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

... записать NSDictionary в.plist, который является документом XML с определенной схемой. Все содержащиеся в нем объекты должны быть экземплярами NSData, NSDate, NSNumber, NSString, NSArray или NSDictionary.

использование - (id)initWithContentsOfFile:(NSString *)path прочитать XML/plist обратно в словарь.

Информационный файл проекта iOS является списком свойств / списком свойств. Они выглядят так при просмотре в текстовом редакторе:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleDisplayName</key>
    <string>App Name</string>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    <key>CFBundleIconFiles</key>
    <array>
        <string>Icon.png</string>
        <string>Icon@2x.png</string>
        <string>Icon-iPad.png</string>
        <string>Icon-Small-50.png</string>
        <string>Icon-Small.png</string>
        <string>Icon-Small@2x.png</string>
    </array>
</dict>
</plist>
Другие вопросы по тегам