1

我正在创建一个 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 但同样无济于事。我相信解决方案非常简单,但我一生都无法在文档中找到答案。

谢谢你的帮助。

4

1 回答 1

2

-nodesForXPath:error:返回一个NSArray*,但您的第二个代码片段已经应用于-objectAtIndex:它。因此,ipp_folder它不包含数组,它包含一个指向NSXMLNode. 修复其声明的类型。

然后,您可以使用该方法识别其父级,-parent并使用该方法识别其在父级子级中的索引-index。然后,假设父母是一个NSXMLElement,你可以这样做:

[[ipp_folder parent] insertChild:someNewNode atIndex:[ipp_folder index] + 1];
于 2012-04-25T11:42:54.660 回答