当前位置:  开发笔记 > 编程语言 > 正文

使用TouchXML在Cocoa中获取Element的值

如何解决《使用TouchXML在Cocoa中获取Element的值》经验,为你挑选了1个好方法。

我正在使用TouchXml,因为NSXML在实际的iPhone上存在限制.无论如何,我刚刚开始使用Objective-C,我来自C#背景,感觉就像在学习一些新东西......但是......这是我的xml文件......



  2009-02-11T00:00:00
  7800
  1000

我想获得7800,即FundValue.有人点我在正确的方向,我现在用的是TouchXml CXMLDocument和myParser的类型是CXMLDocument的,我曾尝试

NSArray *nodes = [myParser nodesForXPath:@"//FundInfo" error:&err];

基本上节点的评估结果为零

if ([nodes count] > 0 ) {
    amount = [nodes objectAtIndex:1];
}

更新1:我已经使用XPath放弃解析,并用的NSURLRequest取代它,所以现在我有一个字符串在整个XML,但我的粗鲁介绍客观-C继续...我只是意识到如何撒娇我已经成为了.NET BCL,像Regex这样的东西很容易获得.

UPDATE2:我已经想通了如何使用RegexKitLite的正则表达式.

所以,现在的问题是,我该如何获得"7800"由内FundValue现在是一个大的字符串.我已确认我有它在我的NSString使用NSLog的写它.



1> Louis Gerbar..:

问题是你的XML有一个命名空间,这意味着你的XPath实际上并不匹配.不幸的是,没有默认映射,XPath实际上并没有定义一种在内部处理它的好方法,因此您无法通过更改XPath来修复它.相反,您需要通知解释器您希望如何在XPath中映射它.

看起来TouchXML通过以下方式实现对此的支持:

- (NSArray *)nodesForXPath:(NSString *)xpath namespaceMappings:(NSDictionary *)inNamespaceMappings error:(NSError **)error;

所以你可以尝试类似的东西:

NSDictionary *mappings = [NSDictionary dictionaryWithObject:@"http://tempuri.org/webservices" forKey:@"tempuri"];
[myParser nodesForXPath:@"//tempuri:FundInfo" namespaceMappings:mappings error:&err];

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有