编写一个xml文件,然后使用xmlSpy生成xsd,下一步要做的就是把xml转换成javabean了。
我从apache网站下载了xmlbeans-2.5.0这个压缩包,然后解压,
从命令行进入解压后的文件夹里面的bin目录,里面有个文件叫scomp.cmd。
我把生成的xsd文件放在了c:/,其内容是
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="actions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="action"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="action">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="result"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="actionClass" use="required"/>
<xs:attribute name="method"/>
</xs:complexType>
</xs:element>
<xs:element name="result">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
还要新建一个文件c:/action.xsdconfig,里面配置生成的bean放在哪个package,内容如下:
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace>
<xb:package>sample.xmlbeans</xb:package>
</xb:namespace>
</xb:config>
在命令行执行这个命令:
scomp -src c:/build/src -out c:/build/actionXMLBean.jar c:/action.xsd
-compiler "C:/Program Files/Java/jdk1.5.0_06/bin/javac" c:/action.xsdconfig
于是在c:/build目录产生了actionXMLBean.jar
在eclipse里面建个java工程,把actionXMLBean.jar,还有xmlbean-2.5.0里面lib目录的jar文件引入到工程。
开始写个测试程序,生成xml文件。
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import org.apache.xmlbeans.XmlAnySimpleType;
import org.apache.xmlbeans.XmlCursor;
import sample.xmlbeans.ActionsDocument;
import sample.xmlbeans.ActionDocument.Action;
import 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>