Deal with XML files: Difference between revisions
Jump to navigation
Jump to search
(importe material) |
(No difference)
|
Latest revision as of 20:39, 12 May 2025
TODO. Complete the task and upload an example data file with (prices made up).
Many files today are encoded as XML. Some of them have a quite complex data structure and are hard to read for human eyes. But good news! In Cuis we have a package to deal with XML and Smalltalk makes exploring XML a lot more enjoyable than in any other programming language.
Problem. I have a company price list in several LibreOffice .odt files. I want to update all those prices adding 1.5%.
Solution. Say you have a file priceList1.odt then:
- Make a directory printList1Dir and copy princeList1.odt in there.
$> mkdir princeList1Dir $> cp priceList1.odt priceList1Dir $> cd priceListdir
- Unzip the file (yes, .odt file as just zipped document, isn't it great?)
- Remove the zipped file from the new directory (you will see why later on)
$> unzip princeList1.odt $> rm princeList1.odt
- Observe there is a file called content.xml, tadaaaa, we are going to work on that !
TO FINISH
- Just started to collect the necessary commands for reading
- I miss commands for writing
- I need to work with true files to make this of any use
Feature require: 'YAXO'. f1 _ '/home/p/download/test1-odt/content.xml' asFileEntry readStream . xdoc _ XMLDOMParser parseDocumentFrom: f1. f1 close. xdoc class. " XMLDocument " xdoc elements. " show all elements " xdoc explore. t1 _ xdoc firstTagNamed: #'table:table'. t1 class. " XMLElement " t1 elements . t1 firstTagNamed: #'text:p'. " <text:p text:style-name="P2">1A</text:p> " t1 tagsNamed: #'text:p' do: [ :el | Transcript log: (' {1}' format: {el. }). Transcript log: ('- contents {1}' format: {el contents. }). ].