如何在iPhone上使用xmlparsingparsingXML文件?
如何在iPhone上使用xmlparsing访问以下XML文件?
<?xml version="1.0" encoding="iso-8859-1"?> <chapter> <TITLE>Title &plainEntity;</TITLE> <para> <informaltable> <tgroup cols="3"> <tbody> <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row> <row><entry>a2<<?xml version="1.0" encoding="iso-8859-1"?> <ADDRESS> <CONTACT> <NAME FIRST="Fred" LAST="Bloggs" NICK="Bloggsie" TITLE="Mr" /> <STREET HOME="5 Any Street" WORK="Floor 24, BigShot Tower" /> <CITY HOME="Little Town" WORK="Anycity" /> <COUNTY HOME="Anyshire" WORK="Anyshire" /> <POSTAL HOME="as plain text" WORK="text" /> <COUNTRY HOME="UK" WORK="UK" /> <PHONE HOME="as text" WORK="text" /> <FAX HOME="none" WORK="555" /> <MOBILE HOME="444" WORK="333" /> <WEB HOME="www.codehelp.co.uk" WORK="" /> <COMPANY>Full name of company here</COMPANY> <GENDER>male</GENDER> <BDAY>Add tags for year, month and day to make this more useful</BDAY> <ANNI>some date long forgotten :-)</ANNI> <SPOUSE>angry</SPOUSE> <CHILDREN>Make sure this tag is one of the ones allowed to repeat in the DTD</CHILDREN> <COMMENT>comments here</COMMENT> <EMAILONE>Either use fixed tags like this, or change to a repeating tag</EMAILONE> <EMAILTWO>second email line</EMAILTWO> <EMAILTHREE>third</EMAILTHREE> <EMAILFOUR>fourth</EMAILFOUR> </CONTACT> </ADDRESS>/entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> &systemEntity; <section id="about"> <title>About this Document</title> <para> <!-- this is a comment --> </para> </section> </chapter>
SDK提供了两种分析XML的方法:libxml2和NSXMLParser。 libxml2是最快的。 要在您的项目中使用它,请转到iPhone App项目的构build设置并设置以下内容:
-
Other linker flags = -lxml2
-
Header Search Paths: $(SDKROOT)/usr/include/libxml2
然后从这个页面下载XPathQuery.m和XPathQuery.h: 在Cocoa中使用libxml2进行XMLparsing和XPath查询 ,并提供了如何使用它的教程。 XPathQuery类是parsingXML的简化方法。 我推荐它,除非你想自己写相同的代码,这似乎并不是这样。
随着那个地方,做
NSString *string = nil; // put your html document here NSData *htmlData = [string dataUsingEncoding:NSUTF8StringEncoding]; NSString *xpath = @"//row"; // any standard XPath expression NSArray *nodesArray = PerformHTMLXPathQuery(htmlData, xpath); NSDictionary *dict; if (0<[nodesArray count]) { dict = [nodesArray objectAtIndex:0]; }
此时,文档中的元素应位于字典中。
这里是相关的SOpost,
parsing器XML与NSXMLParser
http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project
NSXMLParser示例
下面是使用NSXMLParser
的博客教程。