解析XML时遇到问题。
我解析了城市,阿姆斯特丹和阿姆斯特丹的数据。 Den Bosch。
阿姆斯特丹运作良好,但Den Bosch没有。
毫无疑问,这是由于太空问题。 Den Bosch有一个白色空间。
我应该修剪应用程序或Web服务中的空格吗?
哪个是处理太空问题最好的?
编辑: OP和@PeterMurray-Rust似乎同意问题是第三方应用程序返回表单的URL转义字符串:
"Den%20Bosch"
XML不会将<%> 20识别为任何特殊内容,并且必须用空格替换出现次数。典型的脚本编写方法是
s/%20/ /g
这可能是一个非常常见的问题,虽然我不清楚为什么内容应该是URL编码。
[如果我错了,请发表评论]
答案 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非常感谢..