【问题标题】:Parsing XML from NSString to get values从 NSString 解析 XML 以获取值
【发布时间】:2012-08-22 06:56:51
【问题描述】:

这个问题是关于在 xcode 中操作 NSString。

我有一个从 Web 获取的 XML 文本字符串,看起来像这样

<current temperature="73" day="Mon" humidity="59" windspeed="10"></current>

如何从该字符串中获取单个值并将它们放入我的 NSString 变量中?

例如

NSString *tempStr = ??
NSString *dayStr = ??
NSString *windspeedStr = ??

【问题讨论】:

  • 也许您应该尝试实现一个 XML 解析器来完成这项工作?
  • 使用解析器,例如RaptureXML 用于正确解析 XML。扫描仪和正则表达式不是此类任务的首选武器。

标签: iphone ios ios5 xml-parsing


【解决方案1】:

首先,按照RaptureXML project site 中的说明,下载 RaptureXML 并将其包含在您的项目中。

要解析单个给定行,请使用以下 sn-p - 您的输入作为 inXmlString 传递;

//transform string into an XML DOM
RXMLElement *rootNode = [RXMLElement elementFromXMLString:inXmlString 
                                             withEncoding:NSUTF8StringEncoding];
if (rootNode == nil || ![rootNode isValid])
{
    //do something, we failed!
}
else 
{
    NSString *temperature = [rootNode attribute:@"temperature"];
    NSString *day = [rootNode attribute:@"day"];
    NSString *windspeed = [rootNode attribute:@"windspeed"];
}

【讨论】:

    【解决方案2】:

    基本思路是使用 NSString 方法 componentsSeparatedByString: 来解析出你想要的数据。您可能需要做更多的工作才能使其完全适合您的场景。

    NSArray* paArray1= [pstrXMLString componentsSeparatedByString:@" "];
    temlStr= [[[paArray1 objectAtIndex:1] componentsSeparatedByString:@"="] objectAtIndex:1];
    dayStr= [[[paArray1 objectAtIndex:2] componentsSeparatedByString:@"="] objectAtIndex:1];
    windspeedStr= [[[paArray1 objectAtIndex:3] componentsSeparatedByString:@"="] objectAtIndex:1];
    

    【讨论】:

    • 一旦连接的网络服务决定更改参数顺序,这将失败(即使这个答案很危险并且不应该遵循,我仍然没有拒绝它,因为它可能会完成这项工作)。
    • 标记你的答案是有效的。我的 XML 永远不会改变,因此您的观点是有效的。我对它进行了排名。
    • 谢谢山姆。很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多