В документации для обратного вызова начального элемента libxml указано, что указатель на массив содержит 5 значений для каждого атрибута (количество атрибутов возвращается в nb_attributes). Это означает, что каждое 5-е значение в массиве является новым элементом атрибута.
Пять пунктов для каждого атрибута:
- localname (имя атрибута)
- префикс (пространство имен атрибута)
- URI
- [начало] значения (указатель на начало
строки xmlChar для значения)
- end [of value] (указатель на конец
строка xmlChar для значения)
Итак, вам нужно пройтись по массиву, получить каждое значение из элементов для первого атрибута, а затем использовать указатель начального значения, чтобы получить строку xmlChar, которая равна length = end - start. Затем начните заново со следующего атрибута, пока не прочитаете значение nb_attributes.
Если у вас болит голова, я настоятельно рекомендую вам перейти на Apple NSXMLParser (для ссылки может потребоваться вход в систему или использовать эту ссылку NSXMLParser ). В этом случае вы получите атрибуты как NSDictionary. Чтобы извлечь из него все атрибуты, вы можете сделать следующее:
for (NSString *attributeName in [attributeDict allKeys]) {
NSString *attributeValue = [attributeDict objectForKey:attributeName];
// do something here with attributeName and attributeValue
}
Если у вас есть доступ к сайту разработчиков iPhone, посмотрите на пример SeismicXML .