Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xstream反序列化问题_Xml_Xstream_Xml Deserialization - Fatal编程技术网

Xml xstream反序列化问题

Xml xstream反序列化问题,xml,xstream,xml-deserialization,Xml,Xstream,Xml Deserialization,正在尝试反序列化以下XML,其中“day”和“fulldob”是对象 类型及其各自的转换器用于自定义逻辑。反序列化一次&当 方法应用于对象,则缺少“day”和“fulldob”的值。也就是说,day和fulldob未正确反序列化。有人能帮忙吗 ************输入XML********* 这是“fulldob”的对象 这是“day”的对象 谢谢,以下是DOBDayConverter代码: public class DOBDayConverter extends Reflection

正在尝试反序列化以下XML,其中“day”和“fulldob”是对象 类型及其各自的转换器用于自定义逻辑。反序列化一次&当 方法应用于对象,则缺少“day”和“fulldob”的值。也就是说,day和fulldob未正确反序列化。有人能帮忙吗

************输入XML*********

这是“fulldob”的对象

这是“day”的对象


谢谢,

以下是DOBDayConverter代码:

public class DOBDayConverter extends ReflectionConverter {
    public DOBDayConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        DOBDay d = (DOBDay) obj;
        try {
            writer.setValue(d.getDay());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        DOBDay day = new DOBDay();

        day.setDay(reader.getValue());

        return day;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(DOBDay.class); 
    }

}
public class FullDOBConverter extends ReflectionConverter {
    public FullDOBConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        FullDOB fd = (FullDOB) obj;
        try {
            writer.setValue(fd.getFullDOB());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        FullDOB fd = new FullDOB();

        fd.setFullDOB(reader.getValue());

        return fd;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(FullDOB.class); 
    }

}
以下是FullDOBConverter代码:

public class DOBDayConverter extends ReflectionConverter {
    public DOBDayConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        DOBDay d = (DOBDay) obj;
        try {
            writer.setValue(d.getDay());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        DOBDay day = new DOBDay();

        day.setDay(reader.getValue());

        return day;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(DOBDay.class); 
    }

}
public class FullDOBConverter extends ReflectionConverter {
    public FullDOBConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        FullDOB fd = (FullDOB) obj;
        try {
            writer.setValue(fd.getFullDOB());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        FullDOB fd = new FullDOB();

        fd.setFullDOB(reader.getValue());

        return fd;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(FullDOB.class); 
    }

}
不要忘记注册转换器并处理注释:

XStream xs = new XStream();
xs.processAnnotations(DOBData.class);
xs.processAnnotations(FullDOB.class);
xs.processAnnotations(DOBDay.class);
xs.registerConverter(new DOBDayConverter(xs));
xs.registerConverter(new FullDOBConverter(xs));
public class DOBDayConverter extends ReflectionConverter {
    public DOBDayConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        DOBDay d = (DOBDay) obj;
        try {
            writer.setValue(d.getDay());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        DOBDay day = new DOBDay();

        day.setDay(reader.getValue());

        return day;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(DOBDay.class); 
    }

}
public class FullDOBConverter extends ReflectionConverter {
    public FullDOBConverter(XStream xstream) {
        super(xstream.getMapper(), xstream.getReflectionProvider());
    }

    @Override
    public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) {
        FullDOB fd = (FullDOB) obj;
        try {
            writer.setValue(fd.getFullDOB());
        } catch (Exception e) {
        }   
    }

    @Override
    public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {
        FullDOB fd = new FullDOB();

        fd.setFullDOB(reader.getValue());

        return fd;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean canConvert(Class clazz) {
        return clazz.equals(FullDOB.class); 
    }

}
XStream xs = new XStream();
xs.processAnnotations(DOBData.class);
xs.processAnnotations(FullDOB.class);
xs.processAnnotations(DOBDay.class);
xs.registerConverter(new DOBDayConverter(xs));
xs.registerConverter(new FullDOBConverter(xs));