Generating and reading XML doc
Boris Gaertner
Boris.Gaertner at gmx.net
Tue Dec 7 13:53:58 UTC 2004
From: "stéphane ducasse" <ducasse at iam.unibe.ch>
> hi all
>
> does someone has an example/application from which I could learn how to
> programmatically
> save XML code and read them back?
For the beginning, do it the other way round:
Read a piece of XML and save it again. That's easier.
The world is full of XML and some xml files are both small and
understandable. I recommend svg files for a first contact to XML.
svg (scaleable vector graphics) is a W3C recommendation that
some of the newer internet browsers support. When you download
the SVG documentation from http://www.w3.org/TR/SVG/
you get more than enough small xml files to play with.
With Squeak, try this:
Copy the attached file line01.svg into your working directory
and evaluate the following expression with inspect:
XMLDOMParser parseDocumentFrom: (FileDirectory default oldFileNamed:
'line01.svg')
The inspector shows you an instance of XMLDocument. The
subelements are in an OrderedCollection that is the value
of instance variable 'elements'.
Next try this:
| elem |
elem := XMLDOMParser parseDocumentFrom: (FileDirectory default
oldFileNamed: 'line01.svg').
elem printOn: (FileDirectory default newFileNamed: 'output.svg')
When you have done this, you have the file output.svg in your working
directory. Inspect it with with your favourite editor: It is XML!
If you have a good internet browser, you can doubleclick an svg
file to see its contents. Try both line01.svg and output.svg
to see that it is the same drawing.
--- This ends your first attempt to use XML ----
For serious work, you have to do with instances of XMLDocument.
XMLDocument inherits most of its protocol from
XMLNodeWithElements. It is there that you find the
methods that you need to create a document.
The next example shows that it is easy to create an
XMLDocument and to file it out:
| doc elem elem2 elem3 |
doc := XMLDocument new.
elem := XMLElement
named: #svg
attributes:
(Dictionary new
at: 'width' put: '14cm';
at: 'height' put: '8cm';
at: 'viewbox' put: '0 0 1200 400';
yourself).
elem2 := XMLElement
named: #rect
attributes:
(Dictionary new
at: 'fill' put: 'green';
at: 'height' put: '200';
at: 'width' put: '400';
at: 'x' put: '50';
at: 'y' put: '50';
at: 'stroke' put: 'red';
at: 'stroke-width' put: '6';
yourself).
elem3 := XMLElement
named: #text
attributes:
(Dictionary new
at: 'font-size' put: '80';
at: 'stroke' put: 'none';
at: 'fill' put: 'white';
at: 'x' put: '80';
at: 'y' put: '150';
yourself).
elem3 addElement: (XMLStringNode string: 'Squeak').
elem addElement: elem2;
addElement: elem3.
doc addElement: elem.
doc version: '1.0'.
doc printOn: (FileDirectory default newFileNamed: 'firstImage.svg')
As this is again a svg drawing (it draws a green rectangle with a red
border and a text in white), you can try to view it with a suitable viewer.
The attributes of the elements #svg, #rect, #text are described
in the before-mentioned W3C document. For serious work, you will
allways need a document that describes the properties of the
elements that you use.
Enjoy,
Boris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: line01.svg
Type: image/svg+xml
Size: 910 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20041207/f4bc4bc6/line01.svg
More information about the Squeak-dev
mailing list
|