XML

Extensible Markup Language

The Extensible Markup Language (XML) is a simple text-based format for representing structured information: documents, data, configuration, books, transactions, invoices, and much more.

Under the hood Foldr uses the FluidXML package. You can read more about the package here.


Reading XML Files

To read an XML file we call the read method on the mash.xml object. This returns an instance of the FluidXML object.

read

mash.xml.read(File: file) -> FluidXML

Creates a FluidXML object.

Parameters

file

A Foldr file object whose content will be parsed as an XML document.

Natural

set file to mash.file(4, "books.xml")

set xml to mash.xml.read(file)

printline xml

Standard

file = mash.file(4, "books.xml")

xml = mash.xml.read(file)

printline xml

Output

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications 
      with XML.</description>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
    <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
  </book>
  <book id="bk103">
    <author>Corets, Eva</author>
    <title>Maeve Ascendant</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-11-17</publish_date>
    <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description>
  </book>
  <book id="bk104">
    <author>Corets, Eva</author>
    <title>Oberon's Legacy</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2001-03-10</publish_date>
    <description>In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.</description>
  </book>
  <book id="bk105">
    <author>Corets, Eva</author>
    <title>The Sundered Grail</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2001-09-10</publish_date>
    <description>The two daughters of Maeve, half-sisters, 
      battle one another for control of England. Sequel to 
      Oberon's Legacy.</description>
  </book>
  <book id="bk106">
    <author>Randall, Cynthia</author>
    <title>Lover Birds</title>
    <genre>Romance</genre>
    <price>4.95</price>
    <publish_date>2000-09-02</publish_date>
    <description>When Carla meets Paul at an ornithology 
      conference, tempers fly as feathers get ruffled.</description>
  </book>
  <book id="bk107">
    <author>Thurman, Paula</author>
    <title>Splish Splash</title>
    <genre>Romance</genre>
    <price>4.95</price>
    <publish_date>2000-11-02</publish_date>
    <description>A deep sea diver finds true love twenty 
      thousand leagues beneath the sea.</description>
  </book>
  <book id="bk108">
    <author>Knorr, Stefan</author>
    <title>Creepy Crawlies</title>
    <genre>Horror</genre>
    <price>4.95</price>
    <publish_date>2000-12-06</publish_date>
    <description>An anthology of horror stories about roaches,
      centipedes, scorpions  and other insects.</description>
  </book>
  <book id="bk109">
    <author>Kress, Peter</author>
    <title>Paradox Lost</title>
    <genre>Science Fiction</genre>
    <price>6.95</price>
    <publish_date>2000-11-02</publish_date>
    <description>After an inadvertant trip through a Heisenberg
      Uncertainty Device, James Salway discovers the problems 
      of being quantum.</description>
  </book>
  <book id="bk110">
    <author>O'Brien, Tim</author>
    <title>Microsoft .NET: The Programming Bible</title>
    <genre>Computer</genre>
    <price>36.95</price>
    <publish_date>2000-12-09</publish_date>
    <description>Microsoft's .NET initiative is explored in 
      detail in this deep programmer's reference.</description>
  </book>
  <book id="bk111">
    <author>O'Brien, Tim</author>
    <title>MSXML3: A Comprehensive Guide</title>
    <genre>Computer</genre>
    <price>36.95</price>
    <publish_date>2000-12-01</publish_date>
    <description>The Microsoft MSXML3 parser is covered in 
      detail, with attention to XML DOM interfaces, XSLT processing, 
      SAX and more.</description>
  </book>
  <book id="bk112">
    <author>Galos, Mike</author>
    <title>Visual Studio 7: A Comprehensive Guide</title>
    <genre>Computer</genre>
    <price>49.95</price>
    <publish_date>2001-04-16</publish_date>
    <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
  </book>
</catalog>

Working with XML data

Below is a more detailed example of working with an XML document.

Natural

set file to mash.file(4, "books.xml")

set xml to mash.xml.read(file)

set books to xml.query("book")

printline "Number of books: {{ books.length() }}"

printline

each books as book
    each book.childNodes as node
        printline "{{ node.nodeName }} : {{ node.nodeValue }}"
    end
    
    printline
end

Standard

file = mash.file(4, "books.xml")

xml = mash.xml.read(file)

books = xml.query("book")

printline "Number of books: {{ books.length() }}"

printline

each (books as book) {
    each (book.childNodes as node) {
        printline "{{ node.nodeName }} : {{ node.nodeValue }}"
    }
    
    printline
}

Output

Number of books: 12

author : Gambardella, Matthew
title : XML Developer's Guide
genre : Computer
price : 44.95
publish_date : 2000-10-01
description : An in-depth look at creating applications 
      with XML.

author : Ralls, Kim
title : Midnight Rain
genre : Fantasy
price : 5.95
publish_date : 2000-12-16
description : A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.

author : Corets, Eva
title : Maeve Ascendant
genre : Fantasy
price : 5.95
publish_date : 2000-11-17
description : After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.

author : Corets, Eva
title : Oberon's Legacy
genre : Fantasy
price : 5.95
publish_date : 2001-03-10
description : In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.

author : Corets, Eva
title : The Sundered Grail
genre : Fantasy
price : 5.95
publish_date : 2001-09-10
description : The two daughters of Maeve, half-sisters, 
      battle one another for control of England. Sequel to 
      Oberon's Legacy.

author : Randall, Cynthia
title : Lover Birds
genre : Romance
price : 4.95
publish_date : 2000-09-02
description : When Carla meets Paul at an ornithology 
      conference, tempers fly as feathers get ruffled.

author : Thurman, Paula
title : Splish Splash
genre : Romance
price : 4.95
publish_date : 2000-11-02
description : A deep sea diver finds true love twenty 
      thousand leagues beneath the sea.

author : Knorr, Stefan
title : Creepy Crawlies
genre : Horror
price : 4.95
publish_date : 2000-12-06
description : An anthology of horror stories about roaches,
      centipedes, scorpions  and other insects.

author : Kress, Peter
title : Paradox Lost
genre : Science Fiction
price : 6.95
publish_date : 2000-11-02
description : After an inadvertant trip through a Heisenberg
      Uncertainty Device, James Salway discovers the problems 
      of being quantum.

author : O'Brien, Tim
title : Microsoft .NET: The Programming Bible
genre : Computer
price : 36.95
publish_date : 2000-12-09
description : Microsoft's .NET initiative is explored in 
      detail in this deep programmer's reference.

author : O'Brien, Tim
title : MSXML3: A Comprehensive Guide
genre : Computer
price : 36.95
publish_date : 2000-12-01
description : The Microsoft MSXML3 parser is covered in 
      detail, with attention to XML DOM interfaces, XSLT processing, 
      SAX and more.

author : Galos, Mike
title : Visual Studio 7: A Comprehensive Guide
genre : Computer
price : 49.95
publish_date : 2001-04-16
description : Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.

Notes

The read method opens the stream on the File object and holds it open. If you wish to perform actions such as delete on the File after calling read please ensure that you call the File’s close() method first.

← All articles