哪个是iOS中合适的xml解析器?

时间:2012-02-28 20:07:28

标签: iphone objective-c ios ipad xml-parsing

我想解析以下xml文件,

enter image description here enter image description here 哪个是最好的xml解析器iOS。我想解析它像SBJON库,我的意思是我想动态解析它。例如,将所有 POSITION_DATA 元素数据存储在NSMutableDictionary中,该字典应存储在NSMutableArray中。

如果使用SBJON库,那么我将获得包含XML文件的所有数据的第一个数组,然后我将从数组中提取适当的数据。

我可以使用objective-C在iOS中执行此操作。 我已经使用了TBXML库,但我认为它不适合给定的xml文件格式。我也使用TouchXML库,但它给我编译时错误“touchxml库并得到一个错误libxml / tree.h没有这样的文件或目录”。

请帮助我解决这个荒谬的解析问题。

谢谢, RRB

6 个答案:

答案 0 :(得分:2)

NSXMLParser是标准的Cocoa XML解析工具。您将创建NSXMLParserDelegate接口的实现,然后将其传递给您创建的NSXMLParser。我喜欢为每个模型类创建一个委托,然后在解析XML树时根据需要推送和弹出它们。您可以从委托创建回调,以便外部类对委托创建的对象执行任何操作。

Apple提供文档here。 Apple的SeismicXML示例提供了一个很好的背景解析示例。

答案 1 :(得分:2)

查看NSXMLParser的文档。它包含在iOS上。您将XML数据提供给它的实例,然后您成为它的委托,然后告诉它解析。

NSXMLParser * parser = [[NSXMLParser alloc] initWithData:xmlData];
parser.delegate = self;
[parser parse];

然后实施

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

这三种方法在标记打开时调用,遇到标记内和标记关闭时的数据。您可以通过将字符串与elementName参数进行比较来监听XML中所需的标记,并根据需要将数据存储在对象中。

查看Apple的文档以获取完整的实现细节。为什么在内置的类中使用第三方工具包可以满足您的需求?

答案 2 :(得分:1)

https://github.com/TouchCode/TouchXML

你以后会感谢我的。我无法忍受NSXMLParser。

编辑:请务必按照下载的文档文件夹中包含的安装说明进行操作。将向您展示如何摆脱lib xml错误。

答案 3 :(得分:0)

我还建议阅读有关GDataXML的内容。这很简单,也很快。有关how-to-read-and-write-xml-documents-with-gdataxml的更多信息。

希望它有所帮助。

答案 4 :(得分:0)

这里有简单而且很棒的XML Parser to NSDictionary

答案 5 :(得分:0)

NSXMLParser是标准的XML解析工具。