Axis序列化/反序列化器开发指南(2)
jdomelementdeserializer
用过sax解析xml的读者,对反序列化的实现比较容易理解,反序列化也采用了消息触发的机制,我们只需继承org.apache.axis.encoding.deserializerimpl类,并覆盖其中的onendelement方法:
/**(来源www.iocblog.net)
* 在元素结束触发反序列化的方法
* @param namespace string 命名空间
* @param localname string 本地名称
* @param context deserializationcontext 反序列化上下文
* @throws saxexception
*/
public void onendelement(string namespace, string localname,
deserializationcontext context) throws saxexception {
try {
//从反序列化上下文对象中获取原始的消息元素
messageelement msgelem = context.getcurelement();
if (msgelem != null) {
messagecontext messagecontext = context.getmessagecontext();
boolean currentelement = (boolean) messagecontext.getproperty(
deserialize_current_element);
//如果当前的消息元素本身需要反序列化
if (currentelement != null && currentelement.booleanvalue()) {
org.w3c.dom.element element = msgelem.getasdom();
org.jdom.input.dombuilder db=new org.jdom.input.dombuilder();
value=db.build(element);
messagecontext.setproperty(deserialize_current_element,
boolean.false);
return;
}
//反序列化消息元素中的消息体
java.util.arraylist children = msgelem.getchildren();
if (children != null) {
//取得消息体
msgelem = (messageelement) children.get(0);
if (msgelem != null) {
org.w3c.dom.element ret = msgelem.getasdom();
org.jdom.input.dombuilder db=new org.jdom.input.dombuilder();
//用dombuilder将dom模型的element,转换成jdom模型的element
value=db.
Tag: Axis
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。