iPhone中的Xpath问题

时间:2011-07-30 00:27:17

标签: iphone xml xpath gdata

在GdataXML中,我只能使用来自XML根目录的nodesforXpath,但是我希望一旦我有推理成员,我想将Xpath应用于此节点的其余部分,但不是整个DOM树,这可能吗?

下面的示例在for循环中工作错误,带来了DOM中的所有变量,但是一旦我拥有了variableElement,我只想在变量元素上工作,而不是整个DOM。

NSArray *inferenceMembers = [doc nodesForXPath:@"//inferenceresponse/state/variable[not(valuedefinition/variablevalue)]" error:nil];

for (GDataXMLElement *variableElement in inferenceMembers) {
 Variable *variable=[[Variable alloc] init];
 NSArray *items = [variableElement nodesForXPath:@"//variable/domaindefinition/domain/enumType/domainitem" error:nil];          
}

我想要这个的原因并不是因为它很难做到,但我想如果我每次查询整个XML来到达同一个元素的子项时,它会慢一些。我已经读过,我可以使用命名空间和NSDictionary做一些魔术,但不知道该怎么做

1 个答案:

答案 0 :(得分:1)

试试这个:

NSArray *inferenceMembers = [doc nodesForXPath:@"//inferenceresponse/state/variable[not(valuedefinition/variablevalue)]" error:nil];

for (GDataXMLElement *variableElement in inferenceMembers) {
 Variable *variable=[[Variable alloc] init];
 NSArray *items = [variableElement nodesForXPath:@"domaindefinition/domain/enumType/domainitem" error:nil];          
}

看到XML结构能够完全提供帮助是有用的。