diff --git a/java/examples/Topics/File IO/LoadingXMLObjects/Bubble.pde b/java/examples/Topics/File IO/LoadingXMLObjects/Bubble.pde
new file mode 100644
index 000000000..0f7605ebb
--- /dev/null
+++ b/java/examples/Topics/File IO/LoadingXMLObjects/Bubble.pde
@@ -0,0 +1,34 @@
+// Learning Processing
+// Daniel Shiffman
+// http://www.learningprocessing.com
+
+// Example 18-9: Using Processing's XML library
+
+// A Bubble class
+class Bubble {
+
+ float x,y;
+ float diameter;
+color c;
+ Bubble(float r,float g, float b, float d) {
+ x = width/2;
+ y = height/2;
+ c = color(r,g,b,150);
+ diameter = d;
+ }
+
+ // Display Bubble
+ void display() {
+ stroke(0);
+ fill(c);
+ ellipse(x,y,diameter,diameter);
+ }
+
+ // Bubble drifts upwards
+ void drift() {
+ x += random(-1,1);
+ y += random(-1,1);
+ x = constrain(x,0,width);
+ y = constrain(y,0,height);
+ }
+}
diff --git a/java/examples/Topics/File IO/LoadingXMLObjects/LoadingXMLObjects.pde b/java/examples/Topics/File IO/LoadingXMLObjects/LoadingXMLObjects.pde
new file mode 100644
index 000000000..b1be5d564
--- /dev/null
+++ b/java/examples/Topics/File IO/LoadingXMLObjects/LoadingXMLObjects.pde
@@ -0,0 +1,62 @@
+/**
+ * Loading XML Data
+ * by Daniel Shiffman.
+ *
+ * This example demonstrates how to use loadXML()
+ * to retrieve data from an XML document and make
+ * objects from that data
+ *
+ * Here is what the XML looks like:
+ *
+ *
+
+ 40
+
+
+
+ */
+
+// An array of Bubble objects
+Bubble[] bubbles;
+
+void setup() {
+ size(640, 360);
+ smooth();
+ // Load an XML document
+ XML xml = loadXML("bubbles.xml");
+
+ // Get all the child elements
+ XML[] children = xml.getChildren("bubble");
+
+ // Make an array of objects the same size
+ bubbles = new Bubble[children.length];
+
+ for (int i = 0; i < children.length; i ++ ) {
+
+ // The diameter is the content of the child named "Diamater"
+ XML diameterElement = children[i].getChild("diameter");
+ int diameter = int(diameterElement.getContent());
+
+ // The color element has three attributes
+ XML colorElement = children[i].getChild("color");
+ // An int for r g and b
+ int r = colorElement.getInt("red");
+ int g = colorElement.getInt("green");
+ int b = colorElement.getInt("blue");
+
+ // Make a new Bubble object with values from XML document
+ bubbles[i] = new Bubble(r, g, b, diameter);
+ }
+}
+
+
+void draw() {
+ background(255);
+
+ // Display and move all bubbles
+ for (int i = 0; i < bubbles.length; i++ ) {
+ bubbles[i].display();
+ bubbles[i].drift();
+ }
+}
+
diff --git a/java/examples/Topics/File IO/LoadingXMLObjects/data/bubbles.xml b/java/examples/Topics/File IO/LoadingXMLObjects/data/bubbles.xml
new file mode 100644
index 000000000..fc79fb9a7
--- /dev/null
+++ b/java/examples/Topics/File IO/LoadingXMLObjects/data/bubbles.xml
@@ -0,0 +1 @@
+
40
20
80
\ No newline at end of file
diff --git a/java/examples/Topics/File IO/LoadingXMLObjects/sketch.properties b/java/examples/Topics/File IO/LoadingXMLObjects/sketch.properties
new file mode 100644
index 000000000..28faa5897
--- /dev/null
+++ b/java/examples/Topics/File IO/LoadingXMLObjects/sketch.properties
@@ -0,0 +1 @@
+mode=Standard