2010-11-03 74 views
1

有没有办法在xpath查询文档时返回CXMLElement?由- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;返回的XCMLNode项目不包含属性功能。如何在使用xpath时获取CXMLElement

有没有办法直接获取元素或将节点转换为元素?

由于

回答

4

你可以丢,但一定要检查类型第一:

for (CXMLNode *node in nodeArray) 
{ 
    if ([node kind] == CXMLElementKind) 
    { 
     CXMLElement *element = (CXMLElement *)node; 

     // do stuff with element 
    } 
} 
0

AFAIR CXMLElement是CXMLNode的子类。如果您确定xpath将返回CXMLElements,那么只需将CXMLNode转换为CXMLElement。在其他情况下,您应该检查节点类型,然后进行投射。

从touchXML机制的文档:

NSArray *nodes = NULL; 
// searching for piglet nodes 
nodes = [doc nodesForXPath:@"//piglet" error:nil]; 

for (CXMLElement *node in nodes) { 
... 
} 
+0

其实我看了一个来源,并CXMLNode是在函数创建本身,所以它不是一个CXMLElement ... – sharvey 2010-11-03 20:22:27

+0

https://github.com/schwa/TouchXML/blob/master/Documentation/TouchXMLParsing.markdown – Yuras 2010-11-03 20:23:31