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

commits at source.squeak.org commits at source.squeak.org
Tue May 4 14:31:41 UTC 2010


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