{"id":7018,"date":"2011-06-07T09:30:52","date_gmt":"2011-06-07T07:30:52","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=7018"},"modified":"2011-06-07T09:20:00","modified_gmt":"2011-06-07T07:20:00","slug":"tbxml-un-valido-parser-xml-alternativo-a-nsxml-di-apple","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/tbxml-un-valido-parser-xml-alternativo-a-nsxml-di-apple\/","title":{"rendered":"TBXML: un valido parser XML alternativo a NSXML di Apple"},"content":{"rendered":"<p>A molti di voi sar\u00e0 sicuramente capitato di dover parsare file XML all&#8217;interno delle proprie applicazioni iPhone o iPad. Come saprete Apple ci mette a disposizione un framework per realizzare un parser XML, ma certamente \u00e8 molto complicato e lungo da implementare. Cos\u00ec hanno iniziato a comparire in rete alcuni parser di terzi molto piu semplici da utilizzare e al tempo stesso molto completi. Oggi vi voglio segnalare <a href=\"http:\/\/www.tbxml.co.uk\/TBXML\/TBXML_Free.html\" target=\"_blank\">TBXML<\/a> un semplice, ma potente, parser XML.<!--more--><\/p>\n<p>Devo dire che per esperienza personale mi sono sempre trovato bene con questo parser, funziona in modo pressoch\u00e8 perfetto, anche se non so dirvi, in tutta onest\u00e0, se questo sia il migliore o meno, dato che \u00e8 l&#8217;unico che ho provato. Essendomi trovato fin da subito bene la mia ricerca \u00e8 terminata praticamente alla partenza. Magari via commento potete postare la vostra esperienza con questo o altri parser a me sconosciuti.<\/p>\n<p>TBXML, oltre ad essere un valido strumento, fornisce anche un&#8217;ottima documentazione che ci aiuter\u00e0 ad integrarlo nelle nostre applicazioni e ci insegner\u00e0 ad interagire con contenuti XML provenienti da diverse sorgenti.<\/p>\n<h4>Breve panoramica a TBXML<\/h4>\n<p>Gi\u00e0 che siamo qui a parlarne facciamo una breve panoramica di questo parser, per la guida completa vi rimando invece all&#8217;apposita <a href=\"http:\/\/www.tbxml.co.uk\/TBXML\/Guides.html\" target=\"_blank\">sezione guide<\/a> presente sul sito ufficiale.<\/p>\n<p>Iniziamo a vedere il caricamento del file XML, come anticipato poco fa, potremo caricare dati da diverse fonti (file, stringhe contenenti XML, NSData, URL):<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n\/\/caricamento da file\r\nTBXML * tbxml = [[TBXML tbxmlWithXMLFile:@\"books.xml\"] retain];\r\nTBXML * tbxml = [[TBXML tbxmlWithXMLFile:@\"books\" fileExtension:@\"xml\"] retain];\r\n\r\n\/\/caricamento da stringa contenente XML\r\nTBXML * tbxml = [[TBXML tbxmlWithXMLString:@\"<root><elem1 attribute1=\\\"elem1-attribute1\\\"\/><elem2 attribute2=\\\"attribute2\\\"\/><\/root>\"] retain];\r\n\r\n\/\/caricamento da NSData\r\nTBXML * tbxml = [[TBXML tbxmlWithXMLData:myXMLData] retain];\r\n\r\n\/\/caricamento da URL\r\nTBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@\"http:\/\/www.w3schools.com\/XML\/note.xml\"]] retain];\r\n<\/pre>\n<p>Per estrarre elementi e attributi dai vari tag XML, invece, dovremo scrivere:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n\/\/estraiamo il contenuto del tag author presente sulla root del nostro file xml\r\n[TBXML childElementNamed:@\"author\" parentElement:root]\r\n\/\/estraiamo l'attributo nome dal nostro author\r\nname = [TBXML valueOfAttributeNamed:@\"name\" forElement:author];\r\n<\/pre>\n<p>Come vedete da queste poche righe di codice tutto molto semplice. Ovviamente questo articolo vuole essere una semplice segnalazione corredata da una piccola panoramica all&#8217;uso di TBXML che, come detto, a parer mio \u00e8 un ottimo parser XML. Spero di riuscire presto a realizzare un tutorial completo per spiegarvi tutte le potenzialit\u00e0 di questo interessante strumento.<\/p>\n<p>Ciao a presto ragazzi<br \/>\nAndrea Cappellotto<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A molti di voi sar\u00e0 sicuramente capitato di dover parsare file XML all&#8217;interno delle proprie applicazioni iPhone&#8230;<\/p>\n","protected":false},"author":136,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[30,481],"tags":[270,223,763,224],"class_list":["post-7018","post","type-post","status-publish","format-standard","hentry","category-materiale-open-source","category-risorse-utili","tag-andrea-cappellotto","tag-parsing-xml","tag-tbxml","tag-xml-iphone"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/7018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/136"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=7018"}],"version-history":[{"count":9,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/7018\/revisions"}],"predecessor-version":[{"id":7021,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/7018\/revisions\/7021"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=7018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=7018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=7018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}