gpt4 book ai didi

macos - NSXMLElementnodesForXPath.// 返回比后代更多的匹配项

转载 作者:行者123 更新时间:2023-12-03 17:51:40 24 4
gpt4 key购买 nike

我在 NSXMLElement 上使用nodesForXPath 方法时遇到一个奇怪的问题。
我正在使用该调用来查找与名称匹配的元素的所有后代。例如:

NSError *error = nil;
NSArray *decendants = [self nodesForXPath:@".//xr" error:&error];

这似乎在我的代码中通常都有效。
然而,有时我会得到比元素后代更多的匹配项。
在本例中,它似乎是从当前元素到文档末尾查找与名称匹配的所有项目。

这似乎只发生在只有一层“后代”的情况下。
IE。该元素的所有子元素都没有子元素。

我正在处理一个巨大的文档(80MB)。
我正在删除一些元素,但我在搜索之前规范化节点。

[self normalizeAdjacentTextNodesPreservingCDATA:NO];

谁能建议这个问题的原因是什么?需要调查的领域?

谢谢。

最佳答案

不只是你。经过一些实验后,当您指定后代选择器时,nodesForXPath、objectsForXQuery 和 friend 看起来会严重损坏。有时,它们不返回当前元素的匹配后代,而是返回从当前元素的后代开始的每个匹配元素,一直持续到文档末尾。

这似乎仅当搜索的元素作为该元素的直接子元素出现时才会发生。 (您的里程可能会有所不同——我还没有对此进行广泛的测试。)

我已将错误报告为 rdar://18317629,并将其记录在 OpenRadar 中。在该错误得到修复之前,您必须手动迭代 DOM 树,或者小心地避免在包含匹配元素作为其直接子元素的元素中搜索后代。

关于macos - NSXMLElementnodesForXPath.//<name> 返回比后代更多的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com