仅在没有子节点文本的情况下从NSXMLElement获取文本值

时间:2013-08-08 06:59:30

标签: ios objective-c macos nsxml nsxmlelement

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

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

我希望获得NSXMLElement Node的文本值,而不包含所有子节点的文本。所以,它应该只返回:

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

这不起作用:

_articleText = [xmlElement stringValue];

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

P.S。 我使用XPath得到了这个ar节点,我正在寻找XPath解决方案,我不想删除子串。

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

1 个答案:

答案 0 :(得分:1)

假设&#39;阵列&#39;只包含一个元素,那么&#39; s&#39;将包含感兴趣的字符串:

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]; 
}