Ios NSXMLParser,在解析来自web服务的数据时遇到奇怪的问题

Ios NSXMLParser,在解析来自web服务的数据时遇到奇怪的问题,ios,objective-c,ipad,parsing,xml-parsing,Ios,Objective C,Ipad,Parsing,Xml Parsing,我正在使用异步方法从iPad应用程序调用web服务 我收到了由“**”分隔的正确数据,如 420031****新****2372-2398,美国北卡罗来纳州卡里市梅纳德路西北部2372-2398,梅纳德路西北部 ConnectionIDFinishLoading:(NSURLConnection*)连接--为我提供正确的数据。。。那我会的 -(void)connectionDidFinishLoading:(NSURLConnection *)connection { if( m_xml

我正在使用异步方法从iPad应用程序调用web服务

我收到了由“**”分隔的正确数据,如

420031****新****2372-2398,美国北卡罗来纳州卡里市梅纳德路西北部2372-2398,梅纳德路西北部

ConnectionIDFinishLoading:(NSURLConnection*)连接--为我提供正确的数据。。。那我会的

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    if( m_xmlParser )
    {
        [m_xmlParser release];
    }

    m_xmlParser = [[NSXMLParser alloc] initWithData: m_webData];
    [m_xmlParser setDelegate: self];
    [m_xmlParser setShouldResolveExternalEntities: YES];
    [m_xmlParser parse];
}
在此之后,下面的学员将被呼叫

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
}
我检查了字符串,而不是“420031****新****2372-2398,美国北卡罗来纳州卡里市西北梅纳德路2372-2398,西北梅纳德路”数据 我只收到“420031****新****2372”第一次调用,第二次调用foundCharacters,返回剩余字符串“–2398,美国北卡罗来纳州卡里市西北梅纳德路2372–2398,西北梅纳德路”

但对于rest记录,我得到了整个字符串,但对于上面的数据,它在解析时被打断

我做了各种各样的测试,我不明白为什么它只有半个字符串。
只有这张唱片

该方法不能保证您获得全部内容。发件人:

解析器对象可以向委托发送多个 parser:foundCharacters:用于报告 元素。因为字符串可能只是整个字符的一部分 对于当前元素的内容,应将其附加到当前 字符的累积,直到元素发生变化


最好的方法是创建一个
NSMutableString
,并一直附加到它,直到您的代理收到一个
parser:didEndElement
调用。您应该从开始。

所有其他记录是否也有(-)符号?我用其他结果调试,Bin Roll In**和2372–2398,任何人都可以告诉我两个数字之间的字符。。。。。。它是从数据库中保存的吗…由于Roll和In之间的字符不同,所以2372和2398之间的字符不同,因此我猜我遇到了一个奇怪的问题。。。。。让我知道它是什么类型的字符..无法在MAC上..我不知道2372–2398之间有什么类型的字符(两个数字之间的字符)。那个角色在MAC上不存在。。。。如果我用2372-2398替换2372-2398,它将正确解析…嗯。。。原始文本可能包含一个em短划线(–),它比en短划线(-)长。en破折号是您在按相等键左侧的键时得到的。一些文本编辑器,特别是MS Word,当它位于单词字符之间时,会将en破折号转换为em破折号。无论如何,不要假设您将在一次调用中获得所有内容。您不知道什么字符会触发拆分。嗯,但有没有办法修复它,这是web服务本身。。。。如果可能的话。。。由于这些结果仅来自web服务。。。。什么样的检查然后更换?但如果我做单独的网络服务,那么他们就超过100。。。。如果我能得到提示就足够了…为什么我可以考虑web服务修复…因为应用程序有这么多模块…从代码上看不可能…但可以从web服务上思考…您可以在解析ObjC中的XML之前进行搜索和替换。但同样,您正在进行错误的修复。