首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Cocoa解析NSXMLElement

用Cocoa解析NSXMLElement
EN

Stack Overflow用户
提问于 2008-10-28 00:37:59
回答 4查看 6.5K关注 0票数 2

我试图使用XPath解析一个XML文档。我的NSXMLElement之一看起来如下所示,假设如下:

代码语言:javascript
复制
<foo bar="yummy">

我试图获取属性条的值,不管我使用的代码如何解释,都会返回bar=" woo ",这意味着我需要进行进一步的字符串处理,以获得对woo和woo的单独访问。

从本质上说,我做的事情是

代码语言:javascript
复制
NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];

不管怎么说,写上面的代码只是为了让我感觉愉快,而不是bar=“美味”,这样我就可以不用解析字符串了吗?

谢谢。

假设使用了TouchXML,是否仍然需要获得类似的结果?就像只获取属性的值,而没有attribute=“值”一样?这导致必须进一步解析字符串才能得到值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-28 03:59:32

Apple被认为是苹果NSXML实现的完全复制,所以它应该是相同的,除非您将用C-方法替换所有NS-方法。

TouxhXML类直接映射到NSXML类。NSXMLNode -> CXMLNodeNSXMLDocument -> CXMLDocumentNSXMLElement -> CXMLElement。由于明显的原因,不能混合和匹配NSXML和TouchXML类。 TouxhXML方法也直接映射到NSXML方法,但只支持一小部分方法。常量名称和枚举名称几乎是等价的(CXML.(与NSXML.)但是不变的值不会是等价物。

参考文献

使用常规的Apple或TouchXML框架,下面的代码将只为您的示例提供字符串“美味”。

代码语言:javascript
复制
 NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
 NSString *value = [[nodes objectAtIndex:0] stringValue];

祝好运,

Brian G

票数 4
EN

Stack Overflow用户

发布于 2008-10-28 00:52:06

如果您试图在NSXMLDocument上使用iPhone类,您会非常失望,因为这个类(以及相关的NSXMLNode、NSXMLElement等类)在电话中是不可用的(它们在模拟器中可用,这可能会让人感到困惑)。

看一看libxml2在电话上进行XML解析。有几个免费的框架(我相信TouchXML是一个很好的框架)。

尽管如此,如果您想在Mac上运行这段代码,可以使用NSXMLElement方法-attributeForName:来提取您想要的属性。

票数 3
EN

Stack Overflow用户

发布于 2008-10-28 01:59:09

本的右-虽然iPhone代码将使用NSXMLDocument构建并在模拟器中运行,但它在设备上根本无法工作。医生们可能在某个地方提到过,但它相当模糊。TouchXML是TouchCode的一部分;您可以找到关于它的更多信息,这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/241857

复制
相关文章

相似问题

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