我正在创建一个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];
现在,如果我想在XML文件中的元素之后添加NSXMLElements,我该怎么办?
我尝试过以下操作:
NSXMLElement *s= [ipp_folder objectAtIndex:0];
但这会产生运行时错误。我也尝试使用NSXMLNode而不是将数据放在NSArray中但是再次无济于事。我相信解决方案很简单,但我不能为我的生活在文档中找到答案。
感谢您的帮助。
答案 0 :(得分:2)
-nodesForXPath:error:
会返回NSArray*
,但您的第二个代码段已经应用了-objectAtIndex:
。因此,ipp_folder
不包含数组,它包含指向NSXMLNode
的指针。修复其声明的类型。
然后,您可以使用-parent
方法及其父项子项中的索引使用-index
方法识别其父项。然后,假设父级是NSXMLElement
,您可以执行以下操作:
[[ipp_folder parent] insertChild:someNewNode atIndex:[ipp_folder index] + 1];