xmlBeans有点类似于hibernate的映射文件的实现机制,他根据xml的.xsd文件来生成相应的值对象和解析代码(如果把xml文件理解为一个数据库表,那么.xsd文件相当于表结构,想详细了解,推荐一个很好的论坛:http://bbs.xml.org.cn/index.asp 中国xml论坛),这些事情可以使用xmlBeans带的小工具生成代码和jar包,然后调用生成jar包中的api就可以方便的实现解析。
1:要使用首先去http://www.apache.org/dyn/closer.cgi/xmlbeans下载,下完后解压后,推荐设置系统环境变量,将解压后的根目录E:/my/xmlbeans-2.5.0设置到XMLBEANS_HOME环境中即可,这样xmlBeans的环境就搭好了,下面介绍如何使用
2:先建立一个web项目Test2,然后将xmlBeans里的lib目录下的jar包都拷到Test2项目的lib里,然后从xmlBeans里的Sample里拷了一个action.xsd和action.xsdconfig,前者主要是来定义xml包格式,后者主要是用来控制生产的类路径
3:然后点击开始=输入cmd,回车到命令窗口栏,执行scomp,scomp工具是生成类的工具,语法格式如下:
scomp [options] [dirs]* [action.xsd]* [service.wsdl]* [action.xsdconfig]*
根据上面规则在命令行输入如下内容:
scomp -src c:/test/src -out c:/test/actionXMLBean.jar c:/action.xsd -compiler "C:/Java/jdk1.6.0_07/bin/javac" c:/action.xsdconfig
这样就在c:目录下的test里生成了相关的jar包和源文件,然后将jar包拷入Test2的lib目录里,
最后编写测试类,如下:
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import org.apache.xmlbeans.XmlAnySimpleType;
import org.apache.xmlbeans.XmlCursor;
import com.sample.xmlbeans.ActionsDocument;
import com.sample.xmlbeans.ActionDocument.Action;
import com.sample.xmlbeans.ResultDocument.Result;
public class XmlBeanTest
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
// File file = new File("c:/action.xml");
try
{
//创建文档,包含跟节点
ActionsDocument doc = ActionsDocument.Factory.newInstance();
//添加文档子节点
Action a =doc.addNewActions().addNewAction();
//设置子节点的属性
XmlAnySimpleType type = a.addNewActionClass();
type.setStringValue("org.apache.Class");
type = a.addNewName();
type.setStringValue("getit");
//添加文档子节点
Result rs = a.addNewResult();
//设置子节点的属性
XmlAnySimpleType name = rs.addNewName();
name.setStringValue("success");
XmlCursor c1 = rs.newCursor();
c1.setTextValue("a.jsp");
rs = a.addNewResult();
name = rs.addNewName();
name.setStringValue("fail");
XmlCursor c = rs.newCursor();
c.setTextValue("b.jsp");
//把文档输出到文件里面
//doc.save(file);
//把文档输出到标准输出
doc.save(System.out);
//把文档输出到字符串
StringWriter sw = new StringWriter();
doc.save(sw);
System.out.println(sw.getBuffer().toString());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
测试成功打印如下内容就大功告成了。
<?xml version="1.0" encoding="UTF-8"?>
<actions><action actionClass="org.apache.Class" name="getit"><result name="success">a.jsp</result><result name="fail">b.jsp</result></action></actions><actions><action actionClass="org.apache.Class" name="getit"><result name="success">a.jsp</result><result name="fail">b.jsp</result></action></actions>
http://blog.csdn.net/rich1979/archive/2005/12/20/557738.aspx
http://blog.csdn.net/czmchen/archive/2010/09/19/5894773.aspx
http://blog.csdn.net/sophia427/archive/2007/11/15/1887254.aspx
都介绍不错,可以参考下。