Я думаю, вы пропустили несколько шагов. Вы не опубликовали ни то, что представляет собой report.xsd, ни пример xml, поэтому я собираюсь сделать несколько предположений.
Для начала, вы пытаетесь демонтировать xsd, а не xml, что само по себе является причиной проблемы. При этом ваш класс Report.java не выглядит сгенерированным должным образом, поэтому маловероятно, что ваш демаршаллинг сработает, даже если вы попытаетесь использовать файл XML.
Если у вас есть правильно созданный XSD-файл, первое, что вы должны сделать, - это создать JaxB POJO, используя xjc
. xjc
поставляется с java, и вы используете его для создания аннотированных классов java из xsd. Он также создаст 2 дополнительных файла - ObjectFactory.java и package-info.java, которые используются JAXB. (Вы можете указать выходной путь, используя параметр -d (полный список ключей см. В --help)
xjc -d c:\dev\myproject\src\main\java report.xsd
Как только вы сгенерируете эти файлы, вы должны создать свой JAXBContext на основе этого пакета / файла.
JAXBContext jc = JAXBContext.newInstance(something.generated.Report.class);
Unmarshaller um = jc.createUnmarshaller();
Report myJAXBObject = (Report)um.unmarshal(new java.io.FileInputStream("report.xsd"), Report.class).getValue();
Unmarshaller генерирует JAXBElement, из которого вы можете извлечь фактический класс отчета.
Надеюсь, это поможет.