XMPP使用一些奇怪的样式,例如:
<stream:stream to='domain.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
在此XML数据上调用parse.()
时,它会返回false
。我可以看到有两个问题导致了这个问题:
</stream>
标记<stream:stream
包含一个半冒号。可以使用NSXMLParser来解析这个吗?在GitHub上,我看到其他人构建了自己的解析器,但我认为它不如NSXMLParser提供的那样准确,如果有效的话。
答案 0 :(得分:0)
它可以由NSXMLParser解析,因为NSXMLParser符合NSXMLParserDelegate协议,该协议实现某些回调委托方法,例如
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
和
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
允许您在解析器遇到打开/关闭标记时进行解析。
冒号':'标签内部可能无法阻止您实现目标。并且您不必担心错过结束标记,因为那时您将只响应 didStartElement 回调方法