我已经实现了使用TouchXml解析器的演示。它工作正常。但我想解析下面的xml。如何实现TouchXml解析器?
例如:
<Root>
<tag1></tag1>
<tag2>
<temp1></temp1>
<temp2></temp2>
<temp3></temp3>
</tag2>
<tag3></tag3>
</Root>
如何分析这种类型的例子吗?
我已经实现了使用TouchXml解析器的演示。它工作正常。但我想解析下面的xml。如何实现TouchXml解析器?
例如:
<Root>
<tag1></tag1>
<tag2>
<temp1></temp1>
<temp2></temp2>
<temp3></temp3>
</tag2>
<tag3></tag3>
</Root>
如何分析这种类型的例子吗?
TouchXML不错,易于使用。首先,您需要解析文档:
NSError *theError = NULL;
CXMLDocument *theXMLDocument = [[[CXMLDocument alloc] initWithXMLString:input options:0 error:&theError] autorelease];
然后,您可以使用XPath查询文档的结构。例如提取根元素,你可以这样做:
NSArray *foundRoots = [theXMLDocument nodesForXPath:@"//Root" error:&theError];
CXMLElement *root = [foundRoots objectAtIndex:0];
(你经常会得到阵列回来,所以你的情况,你可以只取第一个元素,假设它在文件中存在)
你也可以做一些事情,比如获取元素的所有子元素。所以,如果我们要得到所有我们可以这样的标签:
NSArray *children = [root children];
或者,我们可以得到一个标签具有特定名称:
NSArray *tag1 = [root elementsForName:@"tag1"];
(同样,你得到一个数组,这样做正确的事情和检查)
您的数据是否符合任何架构?
非常好的答案。我问过同样的问题,但我没有得到正确回答。你有任何示例项目,以便我能理解它吗? – harshalb 2009-12-09 06:43:25
我还没有使用过TouchXML,因此不能帮助解决问题(除了编辑示例以使其可见:-))。但是,你的目标仅仅是学习如何使用TouchXML,或者你真的只是想用它来解析一个简单的小XML文件吗?如果是后者,无论如何您都可以使用NSXMLParser更好 - 或者在http://www.levelofindirection.com/journal/2009/9/24/elegant-xml-parsing-with-objective-c.html上查看我的博客条目一个包装 – philsquared 2009-12-08 08:05:24