Для более крупного проекта, использующего XML в качестве формата экспорта / импорта, я получил файл схемы XSD.Я использовал JAXB для генерации классов, добавил подпрограммы для заполнения данных в сгенерированные классы.Теперь я собираю весь файл в файл XML на диске:
Spmigration mig = new Spmigration(); //Main migration object
mig.setBestellungen(new OrdersImpl().getOrders(shop));
JAXBContext jc = JAXBContext.newInstance( "my.migration.context" );
Marshaller m = jc.createMarshaller();
m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.marshal( mig, new File("test.xml") );
Это работает как шарм.Выходной файл правильно сформирован и, при правильной схеме, даже действителен.Сейчас я пытаюсь экспортировать файл, но добавляю схему напрямую.Я добавил несколько строк:
Spmigration mig = new Spmigration(); //Main migration object
mig.setBestellungen(new OrdersImpl().getOrders(shop));
JAXBContext jc = JAXBContext.newInstance( "my.migration.context" );
Marshaller m = jc.createMarshaller();
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.setSchema(schema);
m.marshal( mig, new File("test.xml") );
Файл схемы существует и доступен для чтения (я знаю, потому что я получил другую ошибку, когда забыл указать файл при первой попытке).Теперь строка
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
сгенерировала следующее исключение:
java.lang.VerifyError: (класс: org / apache / xerces / impl / xs / XSAnnotationImpl, метод:подпись writeToDOM: (Lorg / w3c / dom / Node; S) V) Несовместимый аргумент объекта для вызова функции org.apache.jasper.runtime.PageContextImpl.doHandlePageException (PageContextImpl.java:862)
изКонечно, это не весь след стека.Но, похоже, это проблема.Я не читаю ничего существенного из очень небольшого числа проблем, о которых сеть знает с этим конкретным сообщением об ошибке.
Есть ли что-то, что я мог проверить, что-то я делаю неправильно?