XML解析中如何处理空格

3
我遇到了解析XML的问题。
我解析了城市的数据,阿姆斯特丹和登博世。
阿姆斯特丹可以正常工作,但登博世不能。
毫无疑问,这是由于空格问题引起的。登博世有一个空格。
我应该在我的应用程序还是Web服务中去掉空格?
哪种方式最好处理这个空格问题?
编辑: OP和@PeterMurray-Rust似乎都同意问题是第三方应用返回了URL转义后的字符串:
"Den%20Bosch"

XML不认识%20作为特殊字符,因此需要将其替换为空格。一种典型的脚本方法是:

s/%20/ /g

这可能是一个很常见的问题,尽管我不确定为什么内容需要进行URL编码。
[如果我理解错误,请OP留言说明]

1
我需要替换空格为%20,最好的方法是什么? - kiran kumar
3
为了帮助您解决问题,您需要提供一些数据样本。属性值和元素内容中的字符串处理方式不同。您说它无法正常工作 - 是什么不符合您的要求? - peter.murray.rust
@Jon Winstanley,感谢您的编辑...我很抱歉我的英语。 - kiran kumar
4个回答

2

根据您的更新,我认为数据大致如下:

<city>Den%20Bosch</city>

字符串 "%20" 是三个字符,XML 不认为它们具有任何特定含义。根据您的语言或是否使用 XSLT,您需要将它们替换。在 Java 和 XOM 库中,我可能会这样写:
String value = cityNode.getValue().replaceAll("%20", " ");

我无法帮助您解决Cocoa的具体问题 - 我认为您需要调查API以查找如何获取内容值。


@peter.murray.rust...非常感谢...我也理解了 :) - kiran kumar

1

我假设您正在应用程序级别解析XML,并且通过空格,您指的是尾随空格而不是单词“Den”和“Bosch”之间的空格。无论如何,我认为您可以在Web服务级别修剪空格,因为您可以放心地确保使用此Web服务的任何其他应用程序发出的任何调用都不需要修剪空格,因为Web服务在内部处理它们。这对您来说将是一个一点改变。


1

关于Cocoa和XML,我不是很了解。城市名称是节点的内部文本还是标签名?如果是标签名或没有引号的属性,它将失败。如果是内部文本,应该可以工作。但是,有一个CDATA片段告诉解析器忽略内容。


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]];
    }
}

@大家非常感谢..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接