2

我使用KissXML,它是等的替代品NSXMLDocument。这是我的内容NSXMLElement

<ar>
    <k>baker</k>
    <tr>ˈbeɪkə</tr>
    baker пекарь, булочник
</ar>

我想在NSXMLElement Node没有所有子节点文本的情况下获取 a 的文本值。所以,它应该只返回:

baker пекарь, булочник

这不起作用:

_articleText = [xmlElement stringValue];

它返回所有内容,包括 tr 和 k 子节点的文本。

PS 我得到了这个 ar 节点XPath,我正在寻找XPath解决方案,我不想删除子字符串。

NSArray *array = [self.xmlDocument nodesForXPath:@"/xdxf/ar" error:&error];
4

1 回答 1

1

假设 'array' 只包含一个元素,那么 's' 将包含感兴趣的字符串:

NSArray *array = [self.xmlDocument nodesForXPath:@"/xdxf/ar" error:&error];
if([array count] > 0) { 
    NSArray *childrenOfAr = [array[0] children];    
    for(NSXMLNode *n in childrenOfAr) {
        if([n kind] == NSXMLTextKind) {
             NSString *s = [n stringValue];
        }
    }
}

更快的方法是在 Xpath 查询中查找 text():

NSArray *array = [self.xmlDocument nodesForXPath:@"/xdxf/ar/text()" error:&error];
if([array count] > 0) { 
    NSString *s = [array[0] stringValue]; 
}
于 2013-08-09T02:07:08.397 回答