首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只从NSXMLElement获取文本值,而不使用子节点的文本

只从NSXMLElement获取文本值,而不使用子节点的文本
EN

Stack Overflow用户
提问于 2013-08-08 06:59:29
回答 1查看 2.3K关注 0票数 2

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

代码语言:javascript
复制
<ar>
    <k>baker</k>
    <tr>ˈbeɪkə</tr>
    baker пекарь, булочник
</ar>

我希望获得NSXMLElement Node的文本值,而不需要所有子节点的文本。因此,它只应返回:

代码语言:javascript
复制
baker пекарь, булочник

这是行不通的:

代码语言:javascript
复制
_articleText = [xmlElement stringValue];

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

我使用XPath获得了这个ar节点,我正在搜索XPath解决方案,最好是,我不想删除子字符串。

代码语言:javascript
复制
NSArray *array = [self.xmlDocument nodesForXPath:@"/xdxf/ar" error:&error];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-09 02:07:08

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

代码语言:javascript
复制
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():

代码语言:javascript
复制
NSArray *array = [self.xmlDocument nodesForXPath:@"/xdxf/ar/text()" error:&error];
if([array count] > 0) { 
    NSString *s = [array[0] stringValue]; 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18119775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档