NSXMLParser可以用来解析XMPP消息吗?

时间:2014-11-12 20:21:29

标签: ios swift xmpp nsxmlparser

XMPP使用一些奇怪的样式,例如:

<stream:stream to='domain.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>

在此XML数据上调用parse.()时,它会返回false。我可以看到有两个问题导致了这个问题:

  1. 没有</stream>标记
  2. <stream:stream包含一个半冒号。
  3. 可以使用NSXMLParser来解析这个吗?在GitHub上,我看到其他人构建了自己的解析器,但我认为它不如NSXMLParser提供的那样准确,如果有效的话。

1 个答案:

答案 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 回调方法