Как получить CxmlElement при использовании XPath

StackOverflow https://stackoverflow.com/questions/4091193

  •  28-09-2019
  •  | 
  •  

Вопрос

Есть ли способ получить CXMLElement назад, когда XPath запрашивает документ? То XCMLNode Товар, возвращенный - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error; не содержит функций атрибутов.

Есть ли способ либо напрямую получить элемент, либо преобразовать узел в элемент?

Спасибо

Это было полезно?

Решение

Вы можете бросить его, но обязательно проверить тип первым:

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

        // do stuff with element
    }
}

Другие советы

AFAIR CXMLELEMENT - это подкласс CXMLNODE. Если вы уверены, что XPath вернется CXMLELEMS, а затем просто отличайте CXMLNODE в CXMLELEMENT. В другом случае вы должны проверить тип узла, а затем бросить.

От TouchXml Documention:

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

for (CXMLElement *node in nodes) {
...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top