在进行handlers消息控制的时候注意到一个奇怪的地方就是通过经常看到@XObject @XNode一些注解呢 就了解到这个XMap,找到了个简明的XMap介绍 就是一个将XM转化为java对象的类库。安装文档进行了一下尝试。
package com.huy;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;
@XObject(value="Book")
public class Book {
@XNode()
private String title;
@XNodeList(value = "subject", type = String[].class, componentType = String.class)
private String[] subjects;
@XNode("name")
private Name name;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String[] getSubjects() {
return subjects;
}
public void setSubjects(String[] subjects) {
this.subjects = subjects;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
}
package com.huy;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XObject;
@XObject
public class Name {
@XNode("firstName")
private String firstName;
@XNode("lastName")
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
package com.huy;
import java.io.File;
import java.net.URL;
import org.nuxeo.common.xmap.XMap;
public class Test {
public static void main(String[] args) throws Exception {
XMap xmap = new XMap();
xmap.register(Book.class);
xmap.register(Name.class);
URL url = new File("book.xml").toURL();
Object[] result = (Object[]) xmap.loadAll(url);
for (Object element : result) {
Book book = (Book) element;
System.out.println(book.getTitle());
// do something with that book
// ...
}
}
}
<?xml version="1.0"?>
<library>
<Book id="book1">
<title>Book 1</title>
<subject>Software</subject>
<subject>Computers</subject>
<name>
<firstName>JohnFirstName</firstName>
<lastName>JohnLastName</lastName>
</name>
</Book>
<Book id="book2">
<title>Book 2</title>
<subject>Sport</subject>
<name>
<firstName>BillFirstName</firstName>
<lastName>BillLastName</lastName>
</name>
</Book>
</library>
那这里要注意的就是注解中的value值是对应xml文件里的标签 ,区分大小写的。