gpt4 book ai didi

cocoa-touch - 使用 TouchXML 获取 Cocoa 中元素的值

转载 作者:行者123 更新时间:2023-12-03 10:00:44 27 4
gpt4 key购买 nike

由于 NSXML 在实际 iPhone 上的给定限制,我正在使用 TouchXml。无论如何,我刚刚开始使用 Objective-C,我来自 C# 背景,感觉想学习一些新的东西......无论如何......这是我的 xml 文件......

<?xml version="1.0" encoding="utf-8"?>
<FundInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/webservices">
<FundsReleaseDate>2009-02-11T00:00:00</FundsReleaseDate>
<FundValue>7800</FundValue>
<FundShares>1000</FundShares>
</FundInfo>

我正在尝试获得 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 放在一个字符串中,但是我对objective-C 的粗鲁介绍仍在继续......我刚刚意识到我对.NET BCL,其中 Regex 之类的东西很容易获得。

UPDATE2:我已经想出了如何将 RegexKitLite 用于正则表达式。

所以现在的问题是,我如何从现在是一个大字符串的 FundValue 内部获取“7800”。我已经通过使用 NSLog 编写它来确认我在我的 NSString 中拥有它。

最佳答案

问题在于您的 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];

关于cocoa-touch - 使用 TouchXML 获取 Cocoa 中元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com