我有一个 NSXMLElement,它是我代码中其他地方的副本。使用后,它不再连接到 NSXMLDocument。它(我相信是)与任何事物无关。
如果我 NSLog NSXMLElement,我会得到内容。我能看到它。
但是,如果我尝试使用 nodesForXPath,它不会返回任何内容。它是空白的。它找不到任何东西(除非我只搜索 *,在这种情况下它会返回 /t/t/n/t/t 的所有内容)。
现在,如果我将 NSXMLElement 设为 NEW NSXMLDocument 的根,然后搜索新文档,我可以完美地搜索 XPath!
我试图理解那里的逻辑。我一直在阅读文档,但我没有找到任何解释这里发生的事情的东西(或者至少,如果我在文档中找到它,我不明白它)。
我非常感谢有人帮助我准确理解为什么会发生这种情况,以及我是否需要使用这个 NSXMLDocument。
这是我的代码:
(element是一个 NSXMLElement 来自存储的 NSXMLElements 的 NSArray。它们是来自另一个方法中使用的文档的副本)
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]);