对于xml和java对象的转换这里用castor进行转换,当然还有别的方式
方式一:castor和xml映射文件配合
首先提供需要解析的XML(内容不重要,重要的是格式)
<?xml version="1.0" encoding="UTF-8"?>
<alarm>
<alarmType>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<QryODS3Req>
<CARD_NO>10404117200000306099922333</CARD_NO>
</QryODS3Req>
]]>
</alarmType>
<detailContent>
<time>2018-5-23 17:44</time>
<person>
<name>rose</name>
<age>18</age>
<gender>femal</gender>
</person>
<content>连接超时</content>
</detailContent>
<alarmDepartment>asiainfo</alarmDepartment>
<response>回复</response>
<params>
<param protocol="HTTP" port="8080" ip="192.168.133.121"></param>
<param protocol="HTTPs" port="8081" ip="192.168.133.122"></param>
</params>
</alarm>
对应的javaBean:
一共有6个bean:Alarm 、DetailContent 、Person 、QryODS3Req 、Params 、Params
package com.test;
public class Alarm {
private String alarmType;
private DetailContent detailContent;
private String alarmDepartment;
private String Response;
private Params params;
public String getResponse() {
return Response;
}
public void setResponse(String response) {
Response = response;
}
public Params getParams() {
return params;
}
public void setParams(Params params) {
this.params = params;
}
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public DetailContent getDetailContent() {
return detailContent;
}
public void setDetailContent(DetailContent detailContent) {
this.detailContent = detailContent;
}
public String getAlarmDepartment() {
return alarmDepartment;
}
public void setAlarmDepartment(String alarmDepartment) {
this.alarmDepartment = alarmDepartment;
}
@Override
public String toString() {
return "Alarm [alarmType=" + alarmType + ", detailContent="
+ detailContent + ", alarmDepartment=" + alarmDepartment
+ ", response=" + Response + ", params=" + params + "]";
}
}
package com.test;
public class DetailContent {
private String time;
private Person person;
private String content;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "DetailContent [time=" + time + ", person=" + person
+ ", content=" + content + "]";
}
}
package com.test;
public class QryODS3Req {
private String CARD_NO;
public String getCARD_NO() {
return CARD_NO;
}
public void setCARD_NO(String cARD_NO) {
CARD_NO = cARD_NO;
}
}
package com.test;
public class Person {
public String name;
public String age;
public String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender
+ "]";
}
}
package com.test;
public class Params {
private Param[] param;
public Param[] getParam() {
return param;
}
public void setParam(Param[] param) {
this.param = param;
}
}
package com.test;
public class Param {
private String protocol;
private String port;
private String ip;
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
@Override
public String toString() {
return "Param [protocol=" + protocol + ", port=" + port + ", ip=" + ip
+ "]";
}
}
对应的Alarm.xmll的解析配置:mapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
<class name="com.asiainfo.Alarm" auto-complete="true">
<map-to xml="alarm" />
<field name="alarmType" type="string">
<bind-xml name="alarmType" node="element"/>
</field>
<field name="detailContent" type="com.asiainfo.DetailContent">
<bind-xml name="detailContent" node="element" />
</field>
<field name="alarmDepartment" type="string">
<bind-xml name="alarmDepartment" node="element" />
</field>
<field name="response" type="string">
<bind-xml name="Response" node="element" />
</field>
<field name="params" type="com.asiainfo.Params">
<bind-xml name="params" node="element" />
</field>
</class>
<class name="com.asiainfo.DetailContent" auto-complete="true">
<map-to xml="detailContent" />
<field name="time" type="string">
<bind-xml name="time" node="element"/>
</field>
<field name="person" type="com.asiainfo.Person">
<bind-xml name="person" node="element"/>
</field>
<field name="content" type="string">
<bind-xml name="content" node="element"/>
</field>
</class>
<class name="com.asiainfo.Person" auto-complete="true">
<map-to xml="person" />
<field name="name" type="string">
<bind-xml name="name" node="element"/>
</field>
<field name="age" type="string">
<bind-xml name="age" node="element" />
</field>
<field name="gender" type="string">
<bind-xml name="gender" node="element" />
</field>
</class>
<class name="com.asiainfo.Params" auto-complete="true">
<map-to xml="Params" />
<field name="Param" collection="array" type="com.asiainfo.Param">
<bind-xml name="Param" node="element"/>
</field>
</class>
<!--protocol="HTTP" port="8184" ip="192.168.133.121" -->
<class name="com.asiainfo.Param" auto-complete="true">
<map-to xml="person" />
<field name="protocol" type="string">
<bind-xml name="protocol" node="attribute"/>
</field>
<field name="port" type="string">
<bind-xml name="port" node="attribute" />
</field>
<field name="ip" type="string">
<bind-xml name="ip" node="attribute" />
</field>
</class>
</mapping>
这是Alarm.xml中 <![CDATA[]]>里面的mapping配置:Qry.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
<!--
<?xml version="1.0" encoding="UTF-8"?>
<QryODS3Req>
<CARD_NO>10404117200000306099922333</CARD_NO>
</QryODS3Req>
-->
<class name="com.asiainfo.QryODS3Req" auto-complete="true">
<map-to xml="QryODS3Req" />
<field name="CARD_NO" type="string">
<bind-xml name="CARD_NO" node="element"/>
</field>
</class>
</mapping>
使用的jar包是:castor-1.3.jar
Parser.java主类
package com.test;
import java.io.*;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.ValidationException;
import org.exolab.castor.xml.XMLContext;
public class Parser {
public static final XMLContext xml = new XMLContext();
public static void main(String[] args) {
Mapping mapping = new Mapping();
Alarm alarm = null;
String xmlFileName = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><alarm><alarmType><![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?><QryODS3Req><CARD_NO>10404117200000306099922333</CARD_NO></QryODS3Req>]]></alarmType><detailContent><time>2018-5-23 17:44</time><person><name>rose</name><age>18</age><gender>femal</gender></person><content>连接超时</content></detailContent><alarmDepartment>baidu</alarmDepartment><params><param protocol=\"HTTP\" port=\"8080\" ip=\"192.168.133.121\"></param><param protocol=\"HTTPs\" port=\"8081\" ip=\"192.168.133.122\"></param></params></alarm>";
StringReader reader = null;
// String message=null;
try {
// 加载对应的mapping映射文件: 方式一和方式三优先加载方式一,就是项目的根目录下的mapping.xml而不是第三种方式
// 所以如果将mapping.xml放在项目的根目录就不需要放在com.asiainfo下了,这个目录下的在此路径获取的方式下不会被读取
// 加载方式一:获取放在根目录下的mapping.xml
// mapping.loadMapping(System.getProperty("user.dir")
// +"\\mapping.xml");//下面的方式也可以
// 加载方式二:直接获取根目录下的mapping.xml
// mapping.loadMapping("mapping.xml");
// 加载方式三:获取com.asiainfo下的mapping.xml
mapping.loadMapping(System.getProperty("user.dir")+ "\\src\\com\\asiainfo\\mapping.xml");
/** 方式一:读取要解析的xml文件的方式 */
// /caster/src/com/asiainfo/Alarm.xml
// FileInputStream fis=new
// FileInputStream(System.getProperty("user.dir")
// +"\\src\\com\\asiainfo\\Alarm.xml");
// message=new String(IOUtils.toByteArray(fis),"utf-8");
// reader = new StringReader(message);
/** 方式二:读取xml报文 */
reader = new StringReader(xmlFileName);
xml.addMapping(mapping);
Unmarshaller unmar = xml.createUnmarshaller();
unmar.setMapping(mapping);
unmar.setClass(Alarm.class);
alarm = (Alarm) unmar.unmarshal(reader);
// System.out.println("alarm--AlarmDepartment:" +
// alarm.getAlarmDepartment());
// System.out.println("alarm--AlarmType:" + alarm.getAlarmType());
// QryODS3Req qryODS3Req = parseQry(alarm.getAlarmType());
// System.out.println("============ parse QryODS3Req start ================");
// System.out.println(qryODS3Req.getCARD_NO());
// System.out.println("=============parse QryODS3Req end =============");
// System.out.println("alarm--getDetailContent:" +
// alarm.getDetailContent());
// Params params = alarm.getParams();
// Param[] param = params.getParam();
// for (int i = 0; i < param.length; i++) {
// String protocol = param[i].getIp();
// String port = param[i].getPort();
// String ip = param[i].getIp();
// System.out.println("param["+i+"]:"+protocol+":"+port+":"+ip);
// }
// System.out.println("=========================解析xml结束=======================");
} catch (MarshalException e) {
e.printStackTrace();
} catch (ValidationException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("=========================组装xml开始=======================");
StringWriter writer = new StringWriter();
try {
String forma = forma();
alarm.setAlarmType("<![CDATA[" + forma + "]]>");
// 组装一个response,在解析的时候,报文里是没有的
alarm.setResponse("000000000");
Marshaller marsh = new Marshaller(writer);
marsh.setMapping(mapping);
marsh.marshal(alarm);
String alarmReplace = "";
alarmReplace = new String(writer.toString());
alarmReplace = replaceStr(alarmReplace, """, "\"");
alarmReplace = replaceStr(alarmReplace, "<", "<");
alarmReplace = replaceStr(alarmReplace, ">", ">");
System.out.println("组装成xml:" + alarmReplace);
System.out.println("=========================组装xml结束=======================");
} catch (MarshalException e) {
e.printStackTrace();
} catch (ValidationException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static QryODS3Req parseQry(String xmlFileName) {
QryODS3Req qryODS3Req = new QryODS3Req();
Mapping mapping = new Mapping();
StringReader reader = null;
try {
mapping.loadMapping(System.getProperty("user.dir")+ "\\src\\com\\asiainfo\\Qry.xml");
reader = new StringReader(xmlFileName);
xml.addMapping(mapping);
Unmarshaller unmar = xml.createUnmarshaller();
unmar.setMapping(mapping);
unmar.setClass(QryODS3Req.class);
qryODS3Req = (QryODS3Req) unmar.unmarshal(reader);
} catch (Exception e) {
e.printStackTrace();
}
return qryODS3Req;
}
public static String replaceStr(String str, String strOld, String strNew) {
int iIndex = str.indexOf(strOld);
while (iIndex >= 0) {
String str1 = str.substring(0, iIndex);
String str2 = str.substring(iIndex + strOld.length(), str.length());
str = str1 + strNew + str2;
iIndex = str.indexOf(strOld, iIndex + strNew.length());
}
return str;
}
public static String forma() {
Mapping mapping = new Mapping();
StringWriter writer = new StringWriter();
System.out.println("=========================组装xml start=======================");
try {
mapping.loadMapping(System.getProperty("user.dir")+ "\\src\\com\\asiainfo\\Qry.xml");
QryODS3Rsp qryODS3Rsp = new QryODS3Rsp();
qryODS3Rsp.setRslt("33333333333333336666666666666666");
qryODS3Rsp.setRslt("000003333333333333333");
qryODS3Rsp.setEslt("999999999999999999999");
Marshaller marsh = new Marshaller(writer);
marsh.setMapping(mapping);
// marsh.marshal(QryODS3Req);
marsh.marshal(qryODS3Rsp);
System.out.println("组装成xml:" + writer.toString());
System.out.println("=========================组装xml end=======================");
} catch (MarshalException e) {
e.printStackTrace();
} catch (ValidationException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return writer.toString();
}
}
关于文件的加载方式的说明:(目录结构后面被自己修改了,可忽略)
方式二:通过实现类:XMLClassDescriptorImpl进行转换,也是借助castor来实现的,只不过不需要xml的映射文件了
这里只取了几个标签做demo,仅供参考哦!
方式一和方式二的转换速度:方式一的速度比方式二的速度慢
Alarm.xml
<?xml version="1.0" encoding="UTF-8"?>
<Alarm>
<AlarmType>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<QryODS3Req>
<CARD_NO>10404117200000306099922333</CARD_NO>
</QryODS3Req>
]]>
</AlarmType>
<DetailContent>
<Time>2018-5-23 17:44</Time>
<Content>连接超时</Content>
</DetailContent>
<AlarmDepartment>asiainfo</AlarmDepartment>
</Alarm>
对应的Alarm 类
package com.descripter;
import java.util.ArrayList;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
public class Alarm {
/*/caster/src/com/descripter/Alarm.java
<Alarm>
<AlarmType>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<QryODS3Req>
<CARD_NO>10404117200000306099922333</CARD_NO>
</QryODS3Req>
]]>
</AlarmType>
<DetailContent>
<Time>2018-5-23 17:44</Time>
</DetailContent>
<AlarmDepartment>baidu</AlarmDepartment>
</Alarm>
*/
public Alarm() {
super();
}
private AlarmType AlarmType;
// private DetailContent[] DetailContent;
private ArrayList<DetailContent> DetailContent;
private String AlarmDepartment;
// private String Response;
// public String getResponse() {
// return Response;
// }
public void setAlarmType(AlarmType alarmType) {
AlarmType = alarmType;
}
// public void setResponse(String response) {
// Response = response;
// }
// public DetailContent[] getDetailContent() {
// return DetailContent;
// }
//
// public void setDetailContent(DetailContent[] detailContent) {
// DetailContent.
// }
public String getAlarmDepartment() {
return AlarmDepartment;
}
public ArrayList<DetailContent> getDetailContent() {
return DetailContent;
}
public void setDetailContent(DetailContent detailContent) {
DetailContent.add(detailContent);
}
public void setAlarmDepartment(String alarmDepartment) {
AlarmDepartment = alarmDepartment;
}
public AlarmType getAlarmType() {
return AlarmType;
}
public void removeDetailContent() {
DetailContent.clear();
}
public static Alarm unmarshal(java.io.Reader reader)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException{
return (Alarm) Unmarshaller.unmarshal(Alarm.class, reader);
}
public void marshal(java.io.Writer out)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
Marshaller.marshal(this, out);
}
public void validate()
throws org.exolab.castor.xml.ValidationException
{
org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
validator.validate(this);
} //-- void validate()
public boolean isValid()
{
try {
validate();
}
catch (org.exolab.castor.xml.ValidationException vex) {
return false;
}
return true;
} //-- boolean isValid()
}
AlarmDescriptor 描述类:
package com.descripter;
import org.exolab.castor.xml.*;
import org.exolab.castor.xml.util.XMLFieldDescriptorImpl;
public class AlarmDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
private java.lang.String nsPrefix;
private java.lang.String nsURI;
private java.lang.String xmlName;
private org.exolab.castor.xml.XMLFieldDescriptor identity;
public AlarmDescriptor() {
super();
xmlName = "Alarm";
// -- set grouping compositor
setCompositorAsSequence();
XMLFieldDescriptorImpl desc = null;
XMLFieldHandler handler = null;
FieldValidator fieldValidator = null;
// -- initialize attribute descriptors
// -- initialize element descriptors
/*
* private AlarmType AlarmType;
*/
desc = new XMLFieldDescriptorImpl(AlarmType.class, "AlarmType","AlarmType", NodeType.Element);
// desc.setImmutable(false);
handler = (new XMLFieldHandler() {
public java.lang.Object getValue(java.lang.Object object)
throws IllegalStateException {
Alarm target = (Alarm) object;
return target.getAlarmType();
}
public void setValue(java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException {
try {
Alarm target = (Alarm) object;
target.setAlarmType((AlarmType) value);
} catch (Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance(java.lang.Object parent) {
return null;
}
});
desc.setHandler(handler);
desc.setRequired(true);
desc.setMultivalued(false);
addFieldDescriptor(desc);
// -- validation code for: _version
fieldValidator = new FieldValidator();
fieldValidator.setMinOccurs(1);
// { // -- local scope
// StringValidator sv = new StringValidator();
// sv.setLength(9);
// sv.setWhiteSpace("preserve");
// fieldValidator.setValidator(sv);
// }
desc.setValidator(fieldValidator);
/*
* private DetailContent DetailContent;
* 写成了 NodeType.Text
*/
desc = new XMLFieldDescriptorImpl(DetailContent.class, "DetailContent","DetailContent", NodeType.Element);
// desc.setImmutable(true);
handler = (new XMLFieldHandler() {
public java.lang.Object getValue(java.lang.Object object)
throws IllegalStateException {
Alarm target = (Alarm) object;
return target.getDetailContent();
}
public void setValue(java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException {
try {
Alarm target = (Alarm) object;
target.setDetailContent((DetailContent) value);
} catch (Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
try {
Alarm target = (Alarm) object;
target.removeDetailContent();
} catch (java.lang.Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance(java.lang.Object parent) {
return new DetailContent();
}
});
desc.setSchemaType("com.descripter.DetailContent");
desc.setHandler(handler);
desc.setRequired(true);
desc.setMultivalued(false);
addFieldDescriptor(desc);
//-- validation code for: _transInfo
// fieldValidator = new FieldValidator();
// fieldValidator.setMinOccurs(1);
// desc.setValidator(fieldValidator);
/*
* private String AlarmDepartment;
*/
desc = new XMLFieldDescriptorImpl(String.class, "AlarmDepartment", "AlarmDepartment",NodeType.Element);
handler = (new XMLFieldHandler() {
public java.lang.Object getValue(java.lang.Object object)
throws IllegalStateException {
Alarm target = (Alarm) object;
return target.getAlarmDepartment();
}
public void setValue(java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException {
try {
Alarm target = (Alarm) object;
target.setAlarmDepartment((java.lang.String) value);
} catch (Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance(java.lang.Object parent) {
return null;
}
});
desc.setHandler(handler);
desc.setRequired(true);
desc.setMultivalued(false);
addFieldDescriptor(desc);
//-- validation code for: _testFlag
fieldValidator = new FieldValidator();
fieldValidator.setMinOccurs(1);
// { //-- local scope
// StringValidator sv = new StringValidator();
// sv.setLength(1);
// sv.setWhiteSpace("preserve");
// fieldValidator.setValidator(sv);
// }
desc.setValidator(fieldValidator);
/*
* private String Response;
*/
// /*desc = new XMLFieldDescriptorImpl(String.class, "Response","Response", NodeType.Element);
// handler = (new XMLFieldHandler() {
// public java.lang.Object getValue(java.lang.Object object)
// throws IllegalStateException {
// Alarm target = (Alarm) object;
// return target.getResponse();
// }
//
// public void setValue(java.lang.Object object, java.lang.Object value)
// throws IllegalStateException, IllegalArgumentException {
// try {
// Alarm target = (Alarm) object;
// target.setResponse((java.lang.String) value);
// } catch (Exception ex) {
// throw new IllegalStateException(ex.toString());
// }
// }
//
// public java.lang.Object newInstance(java.lang.Object parent) {
// return null;
// }
// });
// desc.setHandler(handler);
// desc.setRequired(true);
// desc.setMultivalued(false);
// addFieldDescriptor(desc);
//
// // -- validation code for: Response
// fieldValidator = new FieldValidator();
// fieldValidator.setMinOccurs(1);
// desc.setValidator(fieldValidator);*/
} // -- com.asiainfo.mcas.filegen.InterBOSS.InterBOSSDescriptor()
//-----------/
//- Methods -/
//-----------/
public org.exolab.castor.mapping.AccessMode getAccessMode()
{
return null;
} //-- org.exolab.castor.mapping.AccessMode getAccessMode()
public org.exolab.castor.mapping.ClassDescriptor getExtends()
{
return null;
} //-- org.exolab.castor.mapping.ClassDescriptor getExtends()
public org.exolab.castor.mapping.FieldDescriptor getIdentity()
{
return identity;
} //-- org.exolab.castor.mapping.FieldDescriptor getIdentity()
public java.lang.Class getJavaClass()
{
return Alarm.class;
} //-- java.lang.Class getJavaClass()
public java.lang.String getNameSpacePrefix()
{
return nsPrefix;
} //-- java.lang.String getNameSpacePrefix()
public java.lang.String getNameSpaceURI()
{
return nsURI;
} //-- java.lang.String getNameSpaceURI()
public org.exolab.castor.xml.TypeValidator getValidator()
{
return this;
} //-- org.exolab.castor.xml.TypeValidator getValidator()
public java.lang.String getXMLName()
{
return xmlName;
} //-- java.lang.String getXMLName()
}
AlarmType 类:
package com.descripter;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
public class AlarmType {
private String _content;
public String getContent() {
return _content;
}
public void setContent(String content) {
this._content = content;
}
public static AlarmType unmarshal(java.io.Reader reader)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException{
return (AlarmType) Unmarshaller.unmarshal(AlarmType.class, reader);
}
public void marshal(java.io.Writer out)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
Marshaller.marshal(this, out);
}
}
AlarmTypeDescriptor 描述类
package com.descripter;
import org.exolab.castor.xml.FieldValidator;
import org.exolab.castor.xml.NodeType;
import org.exolab.castor.xml.XMLFieldHandler;
import org.exolab.castor.xml.util.XMLFieldDescriptorImpl;
import org.exolab.castor.xml.validators.StringValidator;
public class AlarmTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
private java.lang.String nsPrefix;
private java.lang.String nsURI;
private java.lang.String xmlName;
private org.exolab.castor.xml.XMLFieldDescriptor identity;
public AlarmTypeDescriptor() {
super();
xmlName = "AlarmType";
// -- set grouping compositor
setCompositorAsSequence();
XMLFieldDescriptorImpl desc = null;
XMLFieldHandler handler = null;
FieldValidator fieldValidator = null;
// -- initialize attribute descriptors
// -- initialize element descriptors
/*
* String content;
*/
desc = new XMLFieldDescriptorImpl(String.class, "_content","PCDATA", NodeType.Text);
desc.setImmutable(true);
handler = (new XMLFieldHandler() {
public java.lang.Object getValue(java.lang.Object object)
throws IllegalStateException {
AlarmType target = (AlarmType) object;
return target.getContent();
}
public void setValue(java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException {
try {
AlarmType target = (AlarmType) object;
target.setContent((java.lang.String) value);
} catch (Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance(java.lang.Object parent) {
return null;
}
});
desc.setHandler(handler);
addFieldDescriptor(desc);
// -- validation code for: _content
fieldValidator = new FieldValidator();
{ // -- local scope
StringValidator sv = new StringValidator();
sv.setWhiteSpace("preserve");
fieldValidator.setValidator(sv);
}
desc.setValidator(fieldValidator);
// -- initialize attribute descriptors
// -- initialize element descriptors
} // -- com.asiainfo.mcas.filegen.InterBOSS.SvcContDescriptor()
// -----------/
// - Methods -/
// -----------/
public org.exolab.castor.mapping.AccessMode getAccessMode() {
return null;
} // -- org.exolab.castor.mapping.AccessMode getAccessMode()
public org.exolab.castor.mapping.ClassDescriptor getExtends() {
return null;
} // -- org.exolab.castor.mapping.ClassDescriptor getExtends()
public org.exolab.castor.mapping.FieldDescriptor getIdentity() {
return identity;
} // -- org.exolab.castor.mapping.FieldDescriptor getIdentity()
public java.lang.Class getJavaClass() {
return AlarmType.class;
} // -- java.lang.Class getJavaClass()
public java.lang.String getNameSpacePrefix() {
return nsPrefix;
} // -- java.lang.String getNameSpacePrefix()
public java.lang.String getNameSpaceURI() {
return nsURI;
} // -- java.lang.String getNameSpaceURI()
public org.exolab.castor.xml.TypeValidator getValidator() {
return this;
} // -- org.exolab.castor.xml.TypeValidator getValidator()
public java.lang.String getXMLName() {
return xmlName;
} // -- java.lang.String getXMLName()
}
DetailContent 类:
package com.descripter;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
public class DetailContent {
private String time;
// private Person Person;
public DetailContent() {
super();
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
// public Person getPerson() {
// return Person;
// }
//
// public void setPerson(Person person) {
// this.Person = person;
// }
public static DetailContent unmarshal(java.io.Reader reader)
throws org.exolab.castor.xml.MarshalException,
org.exolab.castor.xml.ValidationException {
return (DetailContent) Unmarshaller.unmarshal(DetailContent.class,
reader);
}
public void marshal(java.io.Writer out)
throws org.exolab.castor.xml.MarshalException,
org.exolab.castor.xml.ValidationException {
Marshaller.marshal(this, out);
}
public void validate() throws org.exolab.castor.xml.ValidationException {
org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
validator.validate(this);
} // -- void validate()
public boolean isValid() {
try {
validate();
} catch (org.exolab.castor.xml.ValidationException vex) {
return false;
}
return true;
} // -- boolean isValid()
}
DetailContentDescriptor 描述类:
package com.descripter;
import org.exolab.castor.xml.FieldValidator;
import org.exolab.castor.xml.NodeType;
import org.exolab.castor.xml.XMLFieldHandler;
import org.exolab.castor.xml.util.XMLFieldDescriptorImpl;
import org.exolab.castor.xml.validators.StringValidator;
public class DetailContentDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl{
private java.lang.String nsPrefix;
private java.lang.String nsURI;
private java.lang.String xmlName;
private org.exolab.castor.xml.XMLFieldDescriptor identity;
public DetailContentDescriptor() {
super();
xmlName = "DetailContent";
// -- set grouping compositor
setCompositorAsSequence();
XMLFieldDescriptorImpl desc = null;
XMLFieldHandler handler = null;
FieldValidator fieldValidator = null;
// -- initialize attribute descriptors
// -- initialize element descriptors
/*
* private String time;
*/
desc = new XMLFieldDescriptorImpl(java.lang.String.class, "time", "Time", NodeType.Element);
desc.setImmutable(true);
handler = (new XMLFieldHandler() {
public java.lang.Object getValue( java.lang.Object object )
throws IllegalStateException
{
DetailContent target = (DetailContent) object;
return target.getTime();
}
public void setValue( java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException
{
try {
DetailContent target = (DetailContent) object;
target.setTime((java.lang.String) value);
}
catch (Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance( java.lang.Object parent ) {
return null;
}
} );
desc.setHandler(handler);
addFieldDescriptor(desc);
//-- validation code for: _content
fieldValidator = new FieldValidator();
{ //-- local scope
StringValidator sv = new StringValidator();
sv.setWhiteSpace("preserve");
fieldValidator.setValidator(sv);
}
desc.setValidator(fieldValidator);
//-- initialize attribute descriptors
//-- initialize element descriptors
/*
* private Person person;
*/
// desc = new XMLFieldDescriptorImpl(Person.class, "Person", "Person", NodeType.Text);
// desc.setImmutable(true);
// handler = (new XMLFieldHandler() {
// public java.lang.Object getValue( java.lang.Object object )
// throws IllegalStateException
// {
// DetailContent target = (DetailContent) object;
// return target.getPerson();
// }
// public void setValue( java.lang.Object object, java.lang.Object value)
// throws IllegalStateException, IllegalArgumentException
// {
// try {
// DetailContent target = (DetailContent) object;
// target.setPerson((Person) value);
// }
// catch (Exception ex) {
// throw new IllegalStateException(ex.toString());
// }
// }
// public java.lang.Object newInstance( java.lang.Object parent ) {
// return new Person();
// }
// } );
// desc.setHandler(handler);
// desc.setRequired(true);
// desc.setMultivalued(false);
// addFieldDescriptor(desc);
//
// //-- validation code for: _transInfo
// fieldValidator = new FieldValidator();
// fieldValidator.setMinOccurs(1);
// desc.setValidator(fieldValidator);
} //-- com.asiainfo.mcas.filegen.InterBOSS.SvcContDescriptor()
//-----------/
//- Methods -/
//-----------/
public org.exolab.castor.mapping.AccessMode getAccessMode()
{
return null;
} //-- org.exolab.castor.mapping.AccessMode getAccessMode()
public org.exolab.castor.mapping.ClassDescriptor getExtends()
{
return null;
} //-- org.exolab.castor.mapping.ClassDescriptor getExtends()
public org.exolab.castor.mapping.FieldDescriptor getIdentity()
{
return identity;
} //-- org.exolab.castor.mapping.FieldDescriptor getIdentity()
public java.lang.Class getJavaClass()
{
return DetailContent.class;
} //-- java.lang.Class getJavaClass()
public java.lang.String getNameSpacePrefix()
{
return nsPrefix;
} //-- java.lang.String getNameSpacePrefix()
public java.lang.String getNameSpaceURI()
{
return nsURI;
} //-- java.lang.String getNameSpaceURI()
public org.exolab.castor.xml.TypeValidator getValidator()
{
return this;
} //-- org.exolab.castor.xml.TypeValidator getValidator()
public java.lang.String getXMLName()
{
return xmlName;
} //-- java.lang.String getXMLName()
}
QryODS3Req 类:
package com.descripter;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
public class QryODS3Req {
private String CARD_NO;
public String getCARD_NO() {
return CARD_NO;
}
public void setCARD_NO(String cARD_NO) {
CARD_NO = cARD_NO;
}
public static QryODS3Req unmarshal(java.io.Reader reader)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException{
return (QryODS3Req) Unmarshaller.unmarshal(QryODS3Req.class, reader);
}
public void marshal(java.io.Writer out)
throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
Marshaller.marshal(this, out);
}
public void validate()
throws org.exolab.castor.xml.ValidationException
{
org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
validator.validate(this);
} //-- void validate()
public boolean isValid() {
try {
validate();
} catch (org.exolab.castor.xml.ValidationException vex) {
return false;
}
return true;
} // -- boolean isValid()
}
QryODS3ReqDescriptor 描述类:
/*
* This class was automatically generated with
* <a href="http://www.castor.org">Castor 1.3</a>, using an XML
* Schema.
* $Id$
*/
package com.descripter;
//---------------------------------/
//- Imported classes and packages -/
//---------------------------------/
/**
* Class QryODS3ReqDescriptor.
*
* @version $Revision$ $Date$
*/
public class QryODS3ReqDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
//--------------------------/
//- Class/Member Variables -/
//--------------------------/
private boolean _elementDefinition;
private java.lang.String _nsPrefix;
private java.lang.String _nsURI;
private java.lang.String _xmlName;
private org.exolab.castor.xml.XMLFieldDescriptor _identity;
//----------------/
//- Constructors -/
//----------------/
public QryODS3ReqDescriptor() {
super();
_xmlName = "QryODS3Req";
_elementDefinition = true;
//-- set grouping compositor
setCompositorAsSequence();
org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
org.exolab.castor.mapping.FieldHandler handler = null;
org.exolab.castor.xml.FieldValidator fieldValidator = null;
//-- initialize attribute descriptors
//-- initialize element descriptors
//-- _CARD_NO
desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "CARD_NO", "CARD_NO", org.exolab.castor.xml.NodeType.Element);
desc.setImmutable(true);
handler = new org.exolab.castor.xml.XMLFieldHandler() {
public java.lang.Object getValue( java.lang.Object object )
throws IllegalStateException
{
QryODS3Req target = (QryODS3Req) object;
return target.getCARD_NO();
}
public void setValue( java.lang.Object object, java.lang.Object value)
throws IllegalStateException, IllegalArgumentException
{
try {
QryODS3Req target = (QryODS3Req) object;
target.setCARD_NO( (java.lang.String) value);
} catch (java.lang.Exception ex) {
throw new IllegalStateException(ex.toString());
}
}
public java.lang.Object newInstance(java.lang.Object parent) {
return null;
}
};
desc.setSchemaType("string");
desc.setHandler(handler);
desc.setRequired(true);
desc.setMultivalued(false);
addFieldDescriptor(desc);
addSequenceElement(desc);
//-- validation code for: _CARD_NO
fieldValidator = new org.exolab.castor.xml.FieldValidator();
fieldValidator.setMinOccurs(1);
{ //-- local scope
org.exolab.castor.xml.validators.StringValidator typeValidator;
typeValidator = new org.exolab.castor.xml.validators.StringValidator();
fieldValidator.setValidator(typeValidator);
typeValidator.setWhiteSpace("preserve");
typeValidator.setMaxLength(32);
}
desc.setValidator(fieldValidator);
}
//-----------/
//- Methods -/
//-----------/
/**
* Method getAccessMode.
*
* @return the access mode specified for this class.
*/
public org.exolab.castor.mapping.AccessMode getAccessMode(
) {
return null;
}
/**
* Method getIdentity.
*
* @return the identity field, null if this class has no
* identity.
*/
public org.exolab.castor.mapping.FieldDescriptor getIdentity(
) {
return _identity;
}
/**
* Method getJavaClass.
*
* @return the Java class represented by this descriptor.
*/
public java.lang.Class getJavaClass() {
return QryODS3Req.class;
}
/**
* Method getNameSpacePrefix.
*
* @return the namespace prefix to use when marshaling as XML.
*/
public java.lang.String getNameSpacePrefix() {
return _nsPrefix;
}
/**
* Method getNameSpaceURI.
*
* @return the namespace URI used when marshaling and
* unmarshaling as XML.
*/
public java.lang.String getNameSpaceURI(
) {
return _nsURI;
}
/**
* Method getValidator.
*
* @return a specific validator for the class described by this
* ClassDescriptor.
*/
public org.exolab.castor.xml.TypeValidator getValidator(
) {
return this;
}
/**
* Method getXMLName.
*
* @return the XML Name for the Class being described.
*/
public java.lang.String getXMLName(
) {
return _xmlName;
}
/**
* Method isElementDefinition.
*
* @return true if XML schema definition of this Class is that
* of a global
* element or element with anonymous type definition.
*/
public boolean isElementDefinition(
) {
return _elementDefinition;
}
}
关于castor就总结到这里,有不对的或者错误的地方,欢迎骚扰!(后面的通过类来转换的方法是借鉴前辈的,再此万分感谢!)