我想解析以下xml文件,
哪个是最好的xml解析器iOS。我想解析它像SBJON库,我的意思是我想动态解析它。例如,将所有 POSITION_DATA 元素数据存储在NSMutableDictionary中,该字典应存储在NSMutableArray中。
如果使用SBJON库,那么我将获得包含XML文件的所有数据的第一个数组,然后我将从数组中提取适当的数据。
我可以使用objective-C在iOS中执行此操作。 我已经使用了TBXML库,但我认为它不适合给定的xml文件格式。我也使用TouchXML库,但它给我编译时错误“touchxml库并得到一个错误libxml / tree.h没有这样的文件或目录”。
请帮助我解决这个荒谬的解析问题。
谢谢, RRB
答案 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解析工具。