NSXMLElement,没有NSXMLDocument

时间:2011-09-07 00:12:36

标签: objective-c desktop-application nsxml

我有一个NSXMLElement,它是我代码中其他地方的副本。使用它之后,它不再连接到NSXMLDocument。它(我认为是)与任何东西没有联系。

如果我NSLog NSXMLElement,我会得到内容。我可以看到它。

但是,如果我尝试使用nodesForXPath,它什么都不返回。这是空白的。它找不到任何东西(除非我只是搜索*,在这种情况下它会以/ t / t / n / t / t返回所有内容)。

现在,如果我将NSXMLElement作为新NSXMLDocument的根,然后搜索新文档,我可以完美地搜索XPath!

我试图理解那里的逻辑。我一直在阅读文档,但是我没有找到解释这里发生的事情的任何事情(或者至少,如果我在文档中找到它,我就不理解它。)

我真的很感谢有人帮我理解为什么会这样,以及我是否需要使用这个NSXMLDocument。

这是我的代码:

元素是来自存储的NSXMLElements的NSArray的NSXMLElement。它们是来自另一种方法中使用的文档的副本)

NSArray* scene = [element nodesForXPath:@"scene[1]" error:nil];
NSLog(@"scene: %@", [[scene objectAtIndex:0] stringValue]);

但如果我这样做,我会得到一个结果:

NSXMLDocument* docElement = [[NSXMLDocument alloc] initWithRootElement:element];
NSArray* scene = [docElement nodesForXPath:@"scene[1]" error:nil];
NSLog(@"scene: %@", [[scene objectAtIndex:0] stringValue]);

1 个答案:

答案 0 :(得分:0)

这可能是因为libxml2使用的xpath上下文包含对文档的引用。如果没有文件,它可能不知道如何操作。搜索*时的行为可能只是一种特殊情况,因为它知道它必须返回所有内容,因此它甚至不会尝试搜索。