将一个非常简单的 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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章