[squeak-dev] The Inbox: Help-Squeak-Project-it.4.mcz

Hannes Hirzel hannes.hirzel at gmail.com
Tue May 4 15:09:50 UTC 2010


I have read through it and I like it. I will test it later.

One minor thing
instead of

    * to instance an XML document class
I would say
either
    * to create and instance of the XMLDocument class
or
    * to instantiate an XML document class object (however I'm not
sure about this)

--Hannes



On Tue, 4 May 2010 14:31:38.375 0000, commits at source.squeak.org
<commits at source.squeak.org> wrote:
> A new version of Help-Squeak-Project was added to project The Inbox:
> http://source.squeak.org/inbox/Help-Squeak-Project-it.4.mcz
>
> ==================== Summary ====================
>
> Name: Help-Squeak-Project-it.4
> Author: it
> Time: 4 May 2010, 10:31:33.929 am
> UUID: 1460ca93-adfa-0147-adbb-35447aa254ac
> Ancestors: Help-Squeak-Project-tbn.3
>
> Adding "Retrieving XML data" tutorial. A rewritten version from
> http://mecenia.blogspot.com/2010/05/using-squeak-with-blogger-export-files.html
>
> =============== Diff against Help-Squeak-Project-tbn.3 ===============
>
> Item was added:
> + ----- Method: SqueakTutorials classSide>>bookName (in category
> 'accessing') -----
> + bookName
> + 	^'Tutorials'!
>
> Item was added:
> + ----- Method: SqueakTutorialsOnXML classSide>>pages (in category
> 'accessing') -----
> + pages
> + 	^# (dataRetrieval)!
>
> Item was added:
> + SqueakTutorials subclass: #SqueakTutorialsOnXML
> + 	instanceVariableNames: ''
> + 	classVariableNames: ''
> + 	poolDictionaries: ''
> + 	category: 'Help-Squeak-Project'!
>
> Item was added:
> + ----- Method: SqueakTutorialsOnXML classSide>>dataRetrieval (in category
> 'pages') -----
> + dataRetrieval
> + 	^HelpTopic
> + 		title: 'Retrieving XML data'
> + 		contents:
> + 'Retrieving data from XML documents is simple and easy. This tutorial
> demonstrates the fundamentals with a straightforward approach where code can
> be tested right away either here or in a Workspace window. The beauty of
> Squeak Smalltalk resides in the possibility to evaluate, inspect, print and
> debug code anywhere and this window is no different.
> +
> + This tutorial demonstrates how...
> +
> + 	* to retrieve an XML document from the World Wide Web
> + 	* to instance an XML document class
> + 	* to inspect and understand the content of an XML document
> + 	* to retrieve and display values from specific XML tags
> +
> + Retrieve an XML document from the World Wide Web
> +
> + There are many manners to retrieve data from the World Wide Web in Squeak
> Smalltalk. HTTPClient is among them and let you download files in all
> simplicity. Select the following code snippet and inspect it (press alt-i).
> An Inspect window will open with the document loaded in memory. The result
> is a MIMEDocument object.
> +
> + 	HTTPClient httpGetDocument: ''http://www.squeaksource.com/ss/feed.rss''.
> +
> + TIP: Select HTTPClient and browse it (press alt-b) to open a System
> Browser window on its class. HTTPClient does not have instance methods but
> it has class methods. Click on class to see class methods.
> +
> + Instantiate an XML Document
> +
> + An instance of MIMEDocument will not allow to retrieve XML data in a
> comprehensive manner because it does not understand the nature of XML. For
> this reason, it is necessary to parse the content of MIMEDocument using
> XMLDOMParser. XMLDOMParser>>parseDocumentFrom: requires a stream as a
> parameter and ReadStream will be used for this purpose. The following code
> snippet instantiates an XMLDocument using the content of the downloaded
> file.
> +
> + 	| doc |
> + 	doc := HTTPClient httpGetDocument:
> ''http://www.squeaksource.com/ss/feed.rss''.
> + 	XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
> +
> + Inspect and understand the content of an XML document
> +
> + XML is a flexible document format and it is necessary to understand how
> each given XML file is structured in order to properly search, retrieve and
> manipulate data. Inspecting values is critical in a dynamic programming
> language and environment, such as Squeak Smalltalk. Select the previous code
> snippet and inspect it (press alt-i).
> +
> + Unfortunately, the Inspect window does not reveal a lot about the XML
> structure of the downloaded file. Select the previous code snippet once
> again and explore it (press alt and the capital letter i). An Explorer
> window will open with a tree outline on the instance of XMLDocument.
> +
> + The Inspect and Explorer windows tell a lot about an XMLDocument. The
> sections are instance variables and their values are displayed aside. In the
> Explorer window, unfold elementsAndContents. Unfold other sections as deem
> necessary to understand the XML format and the data available.
> +
> + The gibberish coding is about to become clear. Open a Browser window from
> the world menu and right click in the first pane, select find class (press
> alt-f) and type XMLDocument to search for its class, or select the class
> name and browse it (press alt-b). However, it is suggested to read more
> about XMLParser and XMLParserTest first.
> +
> + Retrieve and display values from specific XML tags
> +
> + The downloaded XML file contains a list of items which are denoted by the
> tag name "item". The Explorer window revealed the content of interest is
> located at the array index 1 of the elementsAndContents.
> +
> + The following code snippet will display items in a Transcript window. Open
> a Transcript window using the world menu before selecting and executing the
> code. Select the code snippet and execute it (press alt-d).
> +
> + 	| doc xml |
> + 	doc := HTTPClient httpGetDocument:
> ''http://www.squeaksource.com/ss/feed.rss''.
> + 	xml := XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
> + 	(xml elements at: 1) tagsNamed: #item do: [:e |
> + 		Transcript show: (e asString); cr.
> + 		].
> +
> + An XML item looks like this:
> +
> + 	<item>
> + 	<title>SqueakSource-lr.1039.mcz</title>
> + 	<link>http://www.squeaksource.com/ss.html</link>
> + 	<description>integrated new stylesheet</description>
> + 	<pubDate>Sat, 10 Apr 2010 11:30:38 +0100</pubDate>
> + 	<author>Lukas Renggli &lt;renggli at iam.unibe.ch&gt;</author>
> + 	<category>SqueakSource, seaside, server</category>
> + 	<enclosure length="302570" type="application/x-monticello"
> url="http://www.squeaksource.com/ss/SqueakSource-lr.1039.mcz"/>
> + 	<guid isPermaLink="false"/> </item>
> +
> + The following code snippet uses information learned, retrieves each
> comment and displays them in a Transcript window. Notice an author can have
> a nil value and is handled accordingly.
> +
> + 	| doc xml |
> + 	doc := HTTPClient httpGetDocument:
> ''http://www.squeaksource.com/ss/feed.rss''.
> + 	xml := XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
> + 	(xml elements at: 1) tagsNamed: #item do: [:e |
> + 		Transcript
> + 			show: ''Date: '', ((e firstTagNamed: #pubDate) contentString); cr;
> + 			show: ''Title: '', ((e firstTagNamed: #title) contentString); cr;
> + 			show: ''Author: '',
> + 				(((e firstTagNamed: #author) notNil)
> + 					ifTrue: [(e firstTagNamed: #author) contentString]
> + 					ifFalse: ['''']); cr;
> + 			show: ''Description: '', ((e firstTagNamed: #description)
> contentString); cr; cr.
> + 			].
> +
> + An item will now looks like:
> +
> + 	Date: Wed, 21 Apr 2010 22:33:18 +0100
> + 	Title: SqueakSource-lr.1060.mcz
> + 	Author: Lukas Renggli <renggli at iam.unibe.ch>
> + 	Description: - ignore email errors
> + '!
>
> Item was added:
> + ----- Method: SqueakTutorialsOnXML classSide>>bookName (in category
> 'accessing') -----
> + bookName
> + 	^'XML'!
>
> Item was added:
> + SqueakHelp subclass: #SqueakTutorials
> + 	instanceVariableNames: ''
> + 	classVariableNames: ''
> + 	poolDictionaries: ''
> + 	category: 'Help-Squeak-Project'!
>
>
>



More information about the Squeak-dev mailing list