/** * Loading XML Data * by Daniel Shiffman. * * This example demonstrates how to use loadJSON() * to retrieve data from a JSON file and make objects * from that data. * * Here is what the JSON looks like (partial): * { "bubbles": { "bubble": [ { "position": { "x": 160, "y": 103 }, "diameter": 43.19838, "label": "Happy" }, { "position": { "x": 121, "y": 179 }, "diameter": 44.758068, "label": "Melancholy" } ] } } */ // An Array of Bubble objects Bubble[] bubbles; // A Table object JSONArray json; void setup() { size(640, 360); loadData(); } void draw() { background(255); // Display all bubbles // for (Bubble b : bubbles) { // b.display(); // b.rollover(mouseX, mouseY); // } // // textAlign(LEFT); // fill(0); // text("Click to add bubbles.", 10, height-10); } void loadData() { // Load JSON file String jsonString = join(loadStrings("data.json"),"\n"); //println(jsonString); json = JSONArray.parse(jsonString); println(json); // Get all the child nodes named "bubble" // XML[] children = xml.getChildren("bubble"); // // // The size of the array of Bubble objects is determined by the total XML elements named "bubble" // bubbles = new Bubble[children.length]; // // for (int i = 0; i < bubbles.length; i++) { // // // The position element has two attributes: x and y // XML positionElement = children[i].getChild("position"); // // Note how with attributes we can get an integer or float directly // float x = positionElement.getInt("x"); // float y = positionElement.getInt("y"); // // // The diameter is the content of the child named "diamater" // XML diameterElement = children[i].getChild("diameter"); // // Note how with the content of an XML node, we retrieve as a String and then convert // float diameter = float(diameterElement.getContent()); // // // The label is the content of the child named "label" // XML labelElement = children[i].getChild("label"); // String label = labelElement.getContent(); // // // Make a Bubble object out of the data read // bubbles[i] = new Bubble(x, y, diameter, label); // } } // Still need to work on adding and deleting void mousePressed() { // Create a new XML bubble element // XML bubble = xml.addChild("bubble"); // // // Set the poisition element // XML position = bubble.addChild("position"); // // Here we can set attributes as integers directly // position.setInt("x",mouseX); // position.setInt("y",mouseY); // // // Set the diameter element // XML diameter = bubble.addChild("diameter"); // // Here for a node's content, we have to convert to a String // diameter.setContent("" + random(40,80)); // // // Set a label // XML label = bubble.addChild("label"); // label.setContent("New label"); // // // // Here we are removing the oldest bubble if there are more than 10 // XML[] children = xml.getChildren("bubble"); // // If the XML file has more than 10 bubble elements // if (children.length > 10) { // // Delete the first one // xml.removeChild(children[0]); // } // // // Save a new XML file // saveXML(xml,"data/data.xml"); // // // reload the new data // loadData(); }