解析XML时处理空格

时间:2011-01-06 10:25:43

标签: cocoa-touch whitespace xml-parsing

解析XML时遇到问题。

我解析了城市,阿姆斯特丹和阿姆斯特丹的数据。 Den Bosch。

阿姆斯特丹运作良好,但Den Bosch没有。

毫无疑问,这是由于太空问题。 Den Bosch有一个白色空间。

我应该修剪应用程序或Web服务中的空格吗?

哪个是处理太空问题最好的?

编辑: OP和@PeterMurray-Rust似乎同意问题是第三方应用程序返回表单的URL转义字符串:

"Den%20Bosch"
XML不会将<%> 20识别为任何特殊内容,并且必须用空格替换出现次数。典型的脚本编写方法是

s/%20/ /g

这可能是一个非常常见的问题,虽然我不清楚为什么内容应该是URL编码。

[如果我错了,请发表评论]

4 个答案:

答案 0 :(得分:2)

从您的更新中我假设数据类似于:

<city>Den%20Bosch</city>

字符串“%20”是三个字符,XML不认为它们具有任何特定含义。根据您的语言或是否使用XSLT,您需要更换它们。在Java和XOM库中,我可以编写

String value = cityNode.getValue().replaceAll("%20", " ");

我无法理解Cocoa的细节 - 我认为您必须调查API以找到如何获取内容值。

答案 1 :(得分:1)

我假设您正在应用程序级别解析xml,而白色空间则表示尾随的空格而不是“Den”和“Bosch”之间的空格。在任何情况下,我认为您可以在Web服务级别修剪空间,因为您可以放心,来自使用此Web服务的任何其他应用程序的任何调用都不需要修剪空间,因为Web服务在内部处理。这对你来说只是一点改变。

答案 2 :(得分:1)

对cocoa和你的xml也不太了解。城市名称,是节点或标签名称的内部文本。如果它在标签名称或没有引号的属性中,它将失败。如果它在内部文本中,它应该工作。但是,有CDATA片段告诉解析器忽略内容

答案 3 :(得分:0)

This is the code i implemented its working fine..........


if ([appDelegate.cityListArray count]>0) {
        aDJInfo=[appDelegate.cityListArray objectAtIndex:indexPath.row];
//http://compliantbox.com/party_temperature/citysearch.php?city=Amsterdam&latitude=52.366125&longitude=4.899171
        url=@"http://compliantbox.com/party_temperature/citysearch.php?city=";
        NSString *string=[aDJInfo.city_Name stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
        url=[url stringByAppendingString:string];
        NSLog(@"abbbbbbbbbbb %@",string);
        url=[url stringByAppendingString:@"&latitude=52.366125&longitude=4.899171"];
        [self parseEventName:[[NSURL alloc]initWithString:url]];
    }
}

@All非​​常感谢..