在X-Meta引擎中事物和世界分别对应以下两个类:
一个事物是由属性和子事物构成的,因此它是像XML这样树形结构的数据。
事物是数据,所以可以存储到文件或数据库中,而事物的编写方式是多样的,常见的如用XML编写,如果用XWorker工具编写的话,通常是dml.txt的格式。
由于一个事物是由属性和子事物构成的,所以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();
本示例的代码有:Person.xer.xml和PersonTest.java。在X-Meta引擎的源码中可以找到。
X-Meta引擎认为任何一个实体都是事物,因此如果任给一个XML文件,那么X-Meta也会把它解析成一个事物,比如Person.xer.xml。
<Person name="Tom" age="40"> <Child name="Smith" age="10"/> </Person>
在这里继续强调的是任何数据、任何实体都是事物,因此事物并不是什么特别的东西,它只是一个可以包含属性和子事物的结构体。
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 版权所有