XML-манипулирование Objective-C как NSString безопасно? - PullRequest
1 голос
/ 18 июля 2011

Безопасно ли преобразовывать XML в NSString из NSData, затем манипулировать строкой и преобразовывать ее обратно в NSData?

Я слышал, что всегда безопаснее работать с библиотеками XML-анализа.Кто-нибудь может объяснить почему?и в какой момент я должен быть осторожен, если я буду использовать этот метод?это возможно проблема кодирования?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Риск, что вы сделаете это:

  1. Преобразование XML в строку
  2. Управляйте строкой и случайно разбивайте XML.
  3. Конвертировать обратно и получить неверный XML.

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

Кроме этого, если вы будете осторожны с операциями, которые вы выполняете на NSString, вы, вероятно, будете в порядке.

1 голос
/ 19 июля 2011

Преобразование между NSData и NSString безопасно, если вы выполняете преобразование с оригинальной кодировкой.

// example: to NSData and back assuming the original message uses UTF-8
NSData *data = [NSData dataWithBytes:[message UTF8String] length:[message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
NSString *string = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];

Анализ XML как строки будет работать только с простыми документами. Если ваша структура XML не изменяется, если элементы, которые вы ищете, уникальны, если содержимое состоит только из символов, если в середине нет разделов CDATA, если нет пространств имен, вы в безопасности. В противном случае ваш код будет легко запутаться, пытаясь переварить XML. Будет надежнее, если и создатель, и клиент документа будут соблюдать правила, установленные стандартом XML.

Если за всем этим вы беспокоитесь о сложности, легко работает с XML, используя XPath . Если вы беспокоитесь о скорости, возможно, вы можете переключиться на более быстрый формат, например JSON, если вы контролируете генерацию XML.

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