How to parse xml file using xmlparsing on iphone?

How can I access the following XML file using xmlparsing on iphone?

<?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> 
+2
source share
2 answers

The SDK provides two methods for parsing XML: libxml2 and NSXMLParser. libxml2 is the fastest. To use it in your project, go to the build settings for your iPhone App project and set the following:

  • Other linker flags = -lxml2
  • Header Search Paths: $(SDKROOT)/usr/include/libxml2

Then download XPathQuery.m and XPathQuery.h from this page: Using libxml2 to parse XML and XPath queries in Cocoa , which also provides a tutorial on how to use it. This XPathQuery class is a simplified way to parse XML. I recommend it if you do not want to write the same code yourself, which does not look like this.

With this in place do

 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]; } 

At this point, the elements from your document should be inside the dict dictionary.

+4
source

All Articles