在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做一些魔术,但不知道该怎么做
答案 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结构能够完全提供帮助是有用的。