Ну, может быть, это не лучший способ избавиться от байтов спецификации, но он работает. Для тех, кто провел такие часы, как я, пытаясь заставить NSXMLParser проглотить спецификации:
Учитывая, что вы получаете ваши данные через NSURLConnection и сохраняете их в NSMutableData * webData.
const char bom[3] = {0xEF, 0xBB, 0xBF};
char *data = [webData mutableBytes];
char *cp = data, *pp;
long lessBom = 0;
do {
cp = strstr((const char *)cp, (const char *)bom);
if (cp) {
pp = cp;
cp += 3;
memcpy(pp, cp, strlen(cp));
lessBom += 3;
}
} while (cp != NULL);
NSMutableData *newData = [[NSMutableData alloc] initWithBytes:data length:webData.length - lessBom];
Затем вы создаете свой парсер с новыми данными, и он ПРОСТО РАБОТАЕТ! Я буду рад получить любые комментарии / улучшения к этому коду