lunedì 24 novembre 2014

Lettore RSS

Abbiamo già visto in questo post che è possibile maneggiare i file XML, quindi fare un lettore RSS con livecode è un gioco da ragazzi, vediamo come fare.
Per chi non sapesse cosa è un RSS, diciamo che è un riassunto del sito in formato XML; utile per vedere aggiornamenti o le ultime notizie pubblicate.
Per esempio il feed RSS di questo blog è scaricabile dal link: http://livecodeitalia.blogspot.com/feeds/posts/default
e il suo contenuto, in formato Atom, in questo momento è:

<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4445525023951541943</id><updated>2014-11-20T17:00:07.053+01:00</updated><category term="programmazione"/><category term="casi di successo"/><category term="eventi"/><category term="grafica"/><category term="animazione"/><category term="immagini"/><category term="mobile"/><category term="videogiochi"/><category term="internet"/><category term="testi"/><category term="Android"/><category term="iOS"/><category term="database"/><category term="debug"/><category term="stampa"/><category term="browser"/><category term="filesystem"/><category term="mac"/><category term="pdf"/><category term="raspberry pi"/><category term="XML"/><category term="audio"/><category term="licenze"/><category term="linux"/><category term="windows"/><category term="3D"/><category term="arduino"/><category term="cloud"/><category term="compressione"/><category term="estensioni"/><category term="matematica"/><category term="versione"/><category term="video"/><title type='text'>Livecode Italia</title><subtitle type='html'>Livecode: un linguaggio di programmazione gratuito, semplice e completo per: Windows, Mac, Linux, Android, iOS e Raspberry Pi.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://livecodeitalia.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default'/><link rel='alternate' type='text/html' href='http://livecodeitalia.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default?start-index=26&amp;max-results=25'/><author><name>Max V</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-0gSDErJzGaU/AAAAAAAAAAI/AAAAAAAABkg/vz8NYNQrMhw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>110</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4445525023951541943.post-5132512118640945924</id><published>2014-11-18T11:58:00.000+01:00</published><updated>2014-11-18T11:58:18.143+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="casi di successo"/><title type='text'>WhiteFly</title><content type='html'>Ho contattato il Sig. Paolo Borzini della società italiana &lt;a href=&quot;http://www.borzini.it/&quot;&gt;WhiteFly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.borzini.it/rw_common/images/LogoTheWhiteFly.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.borzini.it/rw_common/images/LogoTheWhiteFly.png&quot; height=&quot;64&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Questa società in poco più di due anni ha sviluppato più di 50 app! Potete trovare i loro programmi anche sotto il nome di Borzini software.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.borzini.it/rw_common/themes/mirage/images/editable_images/image6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.borzini.it/rw_common/themes/mirage/images/editable_images/image6.jpg&quot; height=&quot;64&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;La società fornisce anche un valido supporto a chi voglia sviluppare una app e non abbia tempo o conoscenze adeguate per produrla; partendo dalla progettazione fino alla pubblicazione sullo &lt;i&gt;store&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;In questo momento il Sig. Borzini è impegnato su vari progetti, ma nonostante ciò mi ha gentilmente inviato una breve presentazione della società che pubblico con piacere:&lt;br /&gt;&lt;br /&gt;&lt;cite&gt;The WhiteFly è stata fondata due anni fa con due scopi, il primo è     gestire un service     on-line per serigrafi e l&#39;altro sviluppare software per smartphone.     &lt;br /&gt;    Il tool di sviluppo che uso è LiveCode, tra i linguaggi di     programmazione che  conosco c&#39;è HyperTalk usato attraverso Hypercard a cavallo tra gli     anni 80 e 90 per     sviluppare gestionali su piattaforme Apple. La scelta di LiveCode,     evoluzione naturale     di HyperTalk/HyperCard non è data solo dall&#39;estrema portabilità del     sorgente e dalla    riusabilità del codice ma dalla potenza del linguaggio. Con poche     manciate di codice    è possibile fare procedure che con altri linguaggi richiederebbero     centinaia di righe.&lt;br /&gt;    Per un&#39;azienda come la mia, il poter recuperare parti di codice già     scritto e preparare    la stessa applicazione per più piattaforme con minime modifiche è la     carta vincente.&lt;br /&gt;    Fino ad ora ho sviluppato oltre cinquanta applicazioni per     iOS/Android sia conto terzi che     per clienti finali, oltre ad una decina di app ,che una volta     avremmo chiamato inutility     ovvero applicazioni troppo specifiche e particolari da trovare un     mercato ampio, ma ora     grazie alla diffusione degli store e dei sistemi su cui possono     girare, queste app hanno     un loro mercato. Grazie alla versatilità di LiveCode ho sviluppato     app diametralmente     opposte tra loro; ci sono semplici applicazioni commerciali per     centri estetici, per     alberghi e club per andare poi ad applicazioni come il dizionario     italiano/cinese che     gestisce pinyin o più complessi come gestionali con carico e scarico     magazzino tramite     smartphone o app che si interfacciano a macchinari come misuratori     di pelle nel settore     conciario o che gestiscono sistemi domotici a distanza oppure ad     analizzatori di documenti.&lt;br /&gt;    Grazie a LiveCode ho sviluppato questi software in una piccola parte     del tempo che avrei      dovuto impiegare se avessi usato altri sistemi di sviluppo.&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;Se volete entrare in contatto con il Sig. Borzini, basta andare sul suo sito: &lt;a href=&quot;http://www.borzini.it/&quot;&gt;http://www.borzini.it/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecodeitalia.blogspot.com/feeds/5132512118640945924/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/whitefly.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/5132512118640945924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/5132512118640945924'/><link rel='alternate' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/whitefly.html' title='WhiteFly'/><author><name>Max V</name><uri>https://plus.google.com/117875773076259835208</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-0gSDErJzGaU/AAAAAAAAAAI/AAAAAAAABkg/vz8NYNQrMhw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4445525023951541943.post-7278118855352324491</id><published>2014-11-17T11:21:00.000+01:00</published><updated>2014-11-17T11:21:18.072+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programmazione"/><category scheme="http://www.blogger.com/atom/ns#" term="testi"/><title type='text'>Prefissi e suffissi</title><content type='html'>Il post di oggi mostra come controllare se un testo comincia o finisce in un determinato modo. Ad esempio vogliamo controllare che l&#39;estensione di un file sia JPG, basterà utilizzare il comando &lt;b&gt;ends with&lt;/b&gt;,&lt;b&gt; &lt;/b&gt;esempio:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; myfile &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;ends&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;answer&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;E&#39; un&#39;immagine!&quot;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;end&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;Potete utilizzare anche più di tre lettere per il controllo. I controlli di solito fa distinzione fra maiuscole o minuscole, però se vi serve una distinzione dovete impostare la proprietà globale &lt;b&gt;caseSensitive&lt;/b&gt; su &lt;i&gt;true&lt;/i&gt;.&lt;br /&gt;Vi ricordo che, per controllare se le estensione di un file è tra quelle ammesse, un altro sistema molto comodo è metterle tutte in una stringa separate da virgola e usare il seguente codice:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; -3 &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; -1 &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; myfile &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;among&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;jpg,gif,bmp,tif&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;answer&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;E&#39; un&#39;immagine!&quot;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;end&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Per controllare invece se un testo comincia con un certo prefisso, basta usare &lt;b&gt;begins with&lt;/b&gt;; esempio:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; myfile &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;begins&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;C&#39;era una volta&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;answer&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;E&#39; una favola!&quot;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;end&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Se avete altri sistemi per fare controlli sulle stringhe, metteteli nei commenti di questo posto.</content><link rel='replies' type='application/atom+xml' href='http://livecodeitalia.blogspot.com/feeds/7278118855352324491/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/prefissi-e-suffissi.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/7278118855352324491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/7278118855352324491'/><link rel='alternate' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/prefissi-e-suffissi.html' title='Prefissi e suffissi'/><author><name>Max V</name><uri>https://plus.google.com/117875773076259835208</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-0gSDErJzGaU/AAAAAAAAAAI/AAAAAAAABkg/vz8NYNQrMhw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4445525023951541943.post-5883290158683735212</id><published>2014-11-14T16:58:00.001+01:00</published><updated>2014-11-14T17:00:13.577+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programmazione"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>I metadati di un testo</title><content type='html'>Livecode supporta l&#39;inserimento di meta data all&#39;interno di un testo, cioè l&#39;inserimento di dati che non sono visibili all&#39;utente che legge il testo.&lt;br /&gt;Per inserire dei metatag ci sono vari modi: potete passare attraverso la proprietà &lt;b&gt;htmlText&lt;/b&gt;:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;set&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #007f7f;&quot;&gt;htmlText&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;Testo normale. &amp;lt;span metadata=&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;quote&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;dato nascosto&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;quote&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;&amp;gt;Testo con metadata&amp;lt;/span&amp;gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;come vedete è solo un tag &lt;i&gt;span&lt;/i&gt;.&lt;br /&gt;Oppure utilizzare la proprietà metadata:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;set&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #007f7f;&quot;&gt;metaData&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;word&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;dato nascosto&quot;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Cosa si può fare con i metadati? Esistono già le proprietà personalizzabili (&lt;i&gt;cutom properties&lt;/i&gt;) che possono contenere dati non visibili all&#39;utente, ma i metadati possono creare effetti legati al testo o trasferire informazioni che non debbono essere visualizzate dall&#39;utente.&lt;br /&gt;Come esempio pratico facciamo in modo che appaia il valore del metadato di una parola passandoci sopra il mouse:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;on&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; mouseMove&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;mouseChunk&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;then&lt;/b&gt; &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;exit&lt;/b&gt; mouseMove&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt; &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;set&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #007f7f;&quot;&gt;toolTip&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;me&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #007f7f;&quot;&gt;metaData&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;mouseChunk&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;end&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; mouseMove &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOhf2jR7DFOu9mZ0zpwLbAeYX78EDcJn-IkdKCJJQ4niANqU5-_urxv-RC8wMGvPDBy0XFBXv2NOOFFiLuaXTV3krP4_fP_V0xlZ_JyAccP0WogNPD6LSWmntXD1w6n0xlB3xaqUN046K0/s1600/metadato.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOhf2jR7DFOu9mZ0zpwLbAeYX78EDcJn-IkdKCJJQ4niANqU5-_urxv-RC8wMGvPDBy0XFBXv2NOOFFiLuaXTV3krP4_fP_V0xlZ_JyAccP0WogNPD6LSWmntXD1w6n0xlB3xaqUN046K0/s1600/metadato.jpg&quot; height=&quot;182&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Un altro modo per avere la lista dei metadati è passare attraverso l&#39;array della proprietà &lt;b&gt;StyledText&lt;/b&gt;; non che mi piaccia, ma può essere utile saperlo:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style=&quot;background-color: #d8d8d8; border: 1px solid grey; max-height: 400px; overflow-x: scroll; overflow-y: scroll; white-space: nowrap; width: 100%;&quot;&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;repeat&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;element&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; tParagraph &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;the&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #007f7f;&quot;&gt;styledText&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;Content&quot;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;add&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; theParagraphCount&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;repeat&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;element&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; tRun &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; tParagraph[&lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;runs&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;if&lt;/b&gt; tRun[&lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;put&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; theParagraphCount &amp;amp; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; tRun[&lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;] &amp;amp; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;after&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; theOutput&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt; &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;end&lt;/b&gt; &lt;b&gt;repeat&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;end&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;b&gt;repeat&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;span style=&quot;color: #7f7f00;&quot;&gt;put&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: black;&quot;&gt; theOutput&lt;/span&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecodeitalia.blogspot.com/feeds/5883290158683735212/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/i-meta-data-di-un-testo.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/5883290158683735212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/5883290158683735212'/><link rel='alternate' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/i-meta-data-di-un-testo.html' title='I metadati di un testo'/><author><name>Max V</name><uri>https://plus.google.com/117875773076259835208</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-0gSDErJzGaU/AAAAAAAAAAI/AAAAAAAABkg/vz8NYNQrMhw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOhf2jR7DFOu9mZ0zpwLbAeYX78EDcJn-IkdKCJJQ4niANqU5-_urxv-RC8wMGvPDBy0XFBXv2NOOFFiLuaXTV3krP4_fP_V0xlZ_JyAccP0WogNPD6LSWmntXD1w6n0xlB3xaqUN046K0/s72-c/metadato.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999

Ok, fa spavento, ma in realtà è molto semplice. Se lo leggiamo con calma, mandando a capo ogni tag, ci accorgiamo che lo schema ha dei tag iniziali che spiegano il blog e di cosa parla, e poi dei tag per ogni post del blog in questa forma:

<entry>
   <id>tag:blogger.com,1999:blog-4445525023951541943.post-5132512118640945924</id>
    <published>2014-11-18T11:58:00.000+01:00</published>
    <updated>2014-11-18T11:58:18.143+01:00</updated>
    <category scheme="http://www.blogger.com/atom/ns#" term="casi di successo"/>
    <title type='text'>WhiteFly</title>
    <content type='html'>Ho contattato il Sig. Paolo Borzini della ...</content>   
    <link rel='replies' type='application/atom+xml' href='http://livecodeitalia.blogspot.com/feeds/5132512118640945924/comments/default' title='Commenti sul post'/>
     <link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4445525023951541943/posts/default/5132512118640945924'/>
     <link rel='alternate' type='text/html' href='http://livecodeitalia.blogspot.com/2014/11/whitefly.html' title='WhiteFly'/>    <author><name>Max V</name> ... </author>
     <thr:total>0</thr:total>
</entry>

I tag entry di questo feed sono solo 25, ognuno in ordine contiene i dati degli ultimi 25 post. Per avere la lista dei titoli, anche senza sapere di quanti entry sia composto, basta il seguente codice (connID contiene il numero di connessione al XML, mentre curn è il nodo corrente):

on mouseUp
   put the conID of this card into connID  
   put "/feed/entry" into curn
   repeat while (curn begins with "/feed")
      put revXMLNodeContents(connID, curn & "/title") & return after lista
      put revXMLNextSibling(connID, curn ) into curn     

   end repeat
   put lista
end mouseUp

Analizziamo il codice: leggiamo il contenuto del tag title del primo tag entry utilizzando il comando revXMLNodeContents. Poi andiamo grazie al ciclo repeat andiamo al prossimo tag entry, se non c'è apparirà xmlerr e quindi usciremo dal ciclo.
Se vogliamo creare un testo con i titoli, i link e i contenuti di ogni post il codice è:

on mouseUp
   put the conID of this card into connID
   put "/feed/entry" into curn
   repeat while (curn begins with "/feed")
      put "<h2>" & revXMLNodeContents(connID, curn & "/title") & "</h2><br>" after lista
      #cerchiamo il link
      put curn & "/link" into curN2      
      repeat while (curn2 begins with curN)               
         if (revXMLAttribute(connID, curn2 ,"type") is "text/html" ) AND (revXMLAttribute(connID, curn2 ,"rel") is "alternate" ) then            
            put revXMLAttribute(connID, curn2   , "href") into thelink
            put "<a href=" & thelink & " >" & thelink & "</a><br>" after lista
         end if
         put revXMLNextSibling(connID, curn2 ) into curn2         
      end repeat   
      put revXMLNodeContents(connID, curn & "/content") & "<br>" after lista
      put revXMLNextSibling(connID, curn ) into curn
   end repeat
   set the htmltext of field "myRSS" to textDecode(lista ,"UTF-8")
   answer "Feed caricato"
end mouseUp


Qui usiamo lo stesso sistema di prima, solo che il link è una prorpietà di href del tag link e quindi ci serve la funzione revXMLAttribute(). Siccome ci sono diversi tag link per ogni post ho inserito una condizione (if) di controllo per verificare che sia il tag link corretto.
Notate infine che questo sito usa la codifica UTF-8 dei caratteri, per non avere problemi sui caratteri accentati ho imposto la decodifica corretta usando textdecode().
Ecco un esempio del risultato:
Vi ricordo di attivare il locktext e di aggiungere il seguente codice al campo dove appaiono i link per renderli cliccabili:

on linkClicked pLink
   launch URL pLink
end linkClicked

Ora sapete gestire i feed RSS in formato ATOM, che è il più complicato, quindi potete gestirli tutti. :-)

Nessun commento:

Posta un commento