NSXMLParser无法解析umlauts(ä,ö,ü)

4
我使用NSXMLParser解析服务器的XML文档,这些文档是以UTF8编码的。我的问题是,NSXMLParser在读取umlauts(如ä、ö、ü)时会中断并开始一个新元素。
例如:
Lösen -- NSXMLParser ---> L + ösen
我该如何让NSXMLParser完整地读取我的umlaut单词,像读取其他单词一样呢?
祝好。

1
你的意思是<Lösen>变成<L><ösen>吗?还是解析器返回了两个文本节点,“L”和“ösen”? - Don McCaughey
解析器为foundCharacters提供了两个字符串: 因此,委托foundCharacters:被调用,分别传入“L”和“ösen”。我希望解析器仅发送一次完整字符串的委托。 - Stefan
3个回答

9
抱歉,根据您在原问题上的评论(foundCharacters接收文本分为两个调用),解析器的行为完全正常。请查看以下“讨论”部分中引用的解析器:foundCharacters:方法:

解析器对象可能会向委托发送多个parser:foundCharacters:消息以报告元素的字符。因为字符串可能只是当前元素的总字符内容的一部分,所以您应将其附加到当前字符累积值中,直到元素更改。

正如您所看到的,解析器可以自由地将字符分成多个块传递给委托。


3

foundCharacters:方法的内容不是由标签包含的,你需要将传入的字符连接起来,直到下一次调用didEndElement方法。


1

我在这行代码中遇到了西班牙字符的问题:

  • (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

如果你能够让didEndElement函数与找到的字符部分良好地配合工作,我相信你会解决这个问题。


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