将一个非常简单的 XML 字符串解析为 NSDictionary [关闭]

Posted

技术标签:

【中文标题】将一个非常简单的 XML 字符串解析为 NSDictionary [关闭]【英文标题】:Parse a very simple XML string into an NSDictionary [closed] 【发布时间】:2013-12-26 09:22:51 【问题描述】:

我想将一个非常简单的XML 字符串解析为NSDictionary,以便我可以轻松访问属性。

RecurrenceInfo: "<RecurrenceInfo Start="12/24/2013 01:00:00" End="01/03/2014 01:00:00" DayNumber="24" WeekOfMonth="0" WeekDays="62" Id="49409301-c3ec-43f0-8571-ca42258e8a6f" Month="12" OccurrenceCount="9" Range="1" />",

我环顾四周,发现了一些库,但我仍然需要实现很多东西。有人知道这是否可以更容易完成吗?

亲切的问候

【问题讨论】:

kissXML 是最好的并且需要最少的代码 ***.com/a/6081782/935381 我还制作了一个基于块的 NSXMLParser 包装器,用于将 XML 转换为 NSDictionary。您可以检查它是否符合您的需求:github.com/erkanyildiz/EYXML2NSDictionary 【参考方案1】:

在 NSXMLParser 上编写了一个很好的包装类。只需传递 XML 字符串。它将转换为 NSDictionary。

https://github.com/amarcadet/XMLReader

【讨论】:

我推荐这个解决方案。它是等同于 NSJSONSerialization 类的 XML。【参考方案2】:

不要使用第三方库。使用内置的之一:

NSXMLParser libxml2

对于这种情况,你最好使用 NSXMLParser,有很多可用的示例,但官方文档位于:https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/XMLParsing/XMLParsing.html#//apple_ref/doc/uid/10000186i

您应该创建一个自己的类,专门用于使用 NSXMLParser 解析您的 XML 字符串类型。它可以返回一个自身的实例或者一个 NSDictionary。由你决定。

【讨论】:

【参考方案3】:

创建NSXMLParser的对象。

NSXMLParser *myParser = [[NSXMLParser alloc] initWithData:xmlData]; 
[myParser setDelegate:self]; 
[myParser setShouldResolveExternalEntities: YES];
[myParser parse];
[myParser release];      

在委托方法中你会找到属性字典。

-(void)parser:(NSXMLParser*)parser
didStartElement:(NSString*)elementName
 namespaceURI:(NSString*)namespaceURI
qualifiedName:(NSString*)qualifiedName
   attributes:(NSDictionary*)attributeDict;

这里attributeDict将拥有所有属性。

【讨论】:

以上是关于将一个非常简单的 XML 字符串解析为 NSDictionary [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

非转义由 R XML 包生成的解析字符串?

快速、轻量级的 XML 解析器 [关闭]

非常简单的 C/C++ XML 解析器 [重复]

将部分 XML 字符串解析为 XElement 列表

186 - 挂钩进程解析

186 - 挂钩进程解析