yangfanconan 发表于 2013-5-10 16:25:38

Processing之旅-----【8课,XML数据类型的使用】

好了同学们我们上课,今天接着实践一个新的数据结构,那就是XML。
/**
* 读取 XML 数据
* by Daniel Shiffman.
*
* 这个例子示范了如何使用loadXML()去取回属于在XML文件中
* 然后生成一个对象从那数据
*
*可扩展标记语言 (Extensible Markup Language, XML) ,
*用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、
*定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
* XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。
*XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
* 本例中XML 是这样的:
*
* <bubbles>
   <bubble>
       <diameter>40</diameter>
       <color red="75" green="255" blue="0"/>
   </bubble>
   </bubbles>
*/

// 声明了一个buubble的对象数组
Bubble[] bubbles;

void setup() {
size(640, 360);

// 给以Xml对象的实力读取XML文件内容,即给xml做初始化赋值操作。【拗口的表达】
XML xml = loadXML("bubbles.xml");

// 得到所有子元素并把这些子元素复制给一个XML对象的数组中
XML[] children = xml.getChildren("bubble");

// 生成一个新的数组对象还是children的大小
bubbles = new Bubble;

for (int i = 0; i < children.length; i++ ) {
   
    // 保存diameter内容的子元素名为 "Diamater"
    XML diameterElement = children.getChild("diameter");
    int diameter = int(diameterElement.getContent());

    // 颜色元素有三个属性
    XML colorElement = children.getChild("color");
    // 每一个都是一个int类型从r到b
    int r = colorElement.getInt("red");
    int g = colorElement.getInt("green");
    int b = colorElement.getInt("blue");

    // 生成一个新的Bubble对象并且从XML文件中进行初始化赋值
    bubbles = new Bubble(r, g, b, diameter);
}
}


void draw() {
background(255);

//显示并移动气泡
for (int i = 0; i < bubbles.length; i++ ) {
    bubbles.display();
    bubbles.drift();
}
}
//一个起泡类
class Bubble {

float x,y;//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, 204);
    diameter = d;
}

// 显示气泡
void display() {
    noStroke();
    fill(c);
    ellipse(x, y, diameter, diameter);
}

// 气泡向上飘
void drift() {
    x += random(-1, 1);
    y += random(-1, 1);
    x = constrain(x, 0, width);
    y = constrain(y, 0, height);
}
}
本例中使用了一个XML文件内容如下:
<?xml version="1.0"?>
<bubbles>
<bubble>
    <diameter>40</diameter>
    <color red="75" green="255" blue="0"/>
</bubble>
<bubble>
    <diameter>20</diameter>
    <color red="255" green="75" blue="25"/>
</bubble>
<bubble>
    <diameter>80</diameter>
    <color red="100" green="150" blue="200"/>
</bubble>
</bubbles>


好了同学们,这节课就上到这里。下课!{:soso__13766225770624999893_7:}
页: [1]
查看完整版本: Processing之旅-----【8课,XML数据类型的使用】