Какао - Написание NSXMLElement В NSXMLDocument

Я создаю NSXMLDocument, из которого я получаю файл, определенный в константе USER_PRINTXML_URL, следующим образом:

NSXMLDocument *ads_user_printxml = [[NSXMLDocument alloc] initWithContentsOfURL: [NSURL URLWithString:USER_PRINTXML_URL]    options:(NSXMLNodePreserveWhitespace|NSXMLNodePreserveCDATA)                                          error:&ads_err];

Затем я использую XPath, чтобы добраться до нужного места в файле XML следующим образом:

NSArray* ipp_folder = [[ads_user_printxml nodesForXPath:@".//root/printing/IPP"error:&ads_err] objectAtIndex:0];

Теперь, если я хочу добавить NSXMLElements после элемента в файле XML, как мне это сделать?

Я пытался сделать следующее:

NSXMLElement *s= [ipp_folder objectAtIndex:0];

Но это вызывает ошибку во время выполнения. Я также попытался использовать NSXMLNode вместо помещения данных в NSArray, но снова безрезультатно. Я считаю, что решение довольно простое, но я не могу найти ответ в документах.

Спасибо за любую помощь.

1 ответ

Решение

-nodesForXPath:error: возвращает NSArray*, но ваш второй фрагмент кода уже применен -objectAtIndex: к этому. Так, ipp_folder не содержит массив, он содержит указатель на NSXMLNode, Исправьте объявленный тип.

Затем вы можете определить его родителя, используя -parent метод и его индекс в дочерних элементах родителя, используя -index метод. Затем, предполагая, что родитель NSXMLElement, ты можешь сделать:

[[ipp_folder parent] insertChild:someNewNode atIndex:[ipp_folder index] + 1];
Другие вопросы по тегам