事物和世界

1.事物和世界对应的Java类

    在X-Meta引擎中事物和世界分别对应以下两个类:

  • org.xmeta.Thing
    事物,表示各种事物。
     
  • org.xmeta.World
    世界,是事物的容器类,通过World可以获取各种事物。

2.事物的结构和存储方式

2.1.事物的结构

    一个事物是由属性和子事物构成的,因此它是像XML这样树形结构的数据。

2.2.事物的存储和编写方式

    事物是数据,所以可以存储到文件或数据库中,而事物的编写方式是多样的,常见的如用XML编写,如果用XWorker工具编写的话,通常是dml.txt的格式。

2.3.事物的基本操作

    由于一个事物是由属性和子事物构成的,所以org.xmeta.Thing的主要方法是设置、获取属性和子事物,以下代码是相关演示:

//创建一个事物
Thing thing = new Thing();

//设置属性, key字符串类型,value是对象(Object)类型
thing.put(key, value);

//获取属性
Object value = thing.get(key);
//通过getXXX来获取XXX基本类型的属性
int intValue = thing.getInt(key);

//添加子节点
Thing child = new Thing();
thing.addChild(child);

//获取子节点
List<Thing> childs = thing.getChilds();

3. 示例

3.1 示例代码

    本示例的代码有:Person.xer.xml和PersonTest.java。在X-Meta引擎的源码中可以找到。

3.2 Person.xer.xml

    X-Meta引擎认为任何一个实体都是事物,因此如果任给一个XML文件,那么X-Meta也会把它解析成一个事物,比如Person.xer.xml。

<Person name="Tom" age="40">
    <Child name="Smith" age="10"/>
</Person>

    在这里继续强调的是任何数据、任何实体都是事物,因此事物并不是什么特别的东西,它只是一个可以包含属性和子事物的结构体。

3.3 在代码中使用事物

    X-Meta引擎是使用Java编写的,可以在Java代码中获取并操作具体的事物。如:

package org.xmeta.example;

import org.xmeta.Thing;
import org.xmeta.World;

public class PersonTest {
	public static void main(String args[]){
		//初始化World,World是获取事物的容器
		World world = World.getInstance();
		world.init(".");
		
		//获取Perxon.xer.xml定义的事物
		Thing person = world.getThing("org.xmeta.example.Person");
		
		//属性
		System.out.println("name=" + person.get("name"));
		System.out.println("age=" + person.get("age"));

		//子事物
		for(Thing child : person.getChilds()){
			System.out.println("child name=" + child.get("name"));
			System.out.println("child age=" + child.get("age"));
		}
	}
}

    在这里org.xmeta.example.Person对应的是org/xmeta/example/Person.xer.xml这个文件,而person对象本质上是一个Map,因此可以使用get属性和set属性的方法,而person.getChilds()返回的是一个List对象,List中包含的是子事物。

    通过Person的例子也可以看到Thing是由父子节点组成的,而每一个节点可以包含属性,因此和XML的结构是一样的,因此和JSON等的结构也是一样的。

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号