У меня есть бизнес-требование для генерации XML из классов (определенных в схеме) как можно более легкая форма. Для этого я удалил всю информацию пространства имен из xml.Заменить удаленные данные пространства имен на Unmarshal
Пример схемы:
<xs:schema xmlns="http://aschema/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://aschema/"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="Test" type="TestType"/>
<xs:complexType name="TestType">
<xs:sequence>
<xs:element name="test" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Формирует Test
класс:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TestType", propOrder = {
"test"
})
@XmlRootElement(name = "Test")
public class Test {
@XmlElement(required = true)
protected String test;
/**
* Gets the value of the test property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTest() {
return test;
}
/**
* Sets the value of the test property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTest(String value) {
this.test = value;
}
}
маршалов (я могу объяснить, как если вы хотите, но я думаю, что бы только загромождать вопрос - счастливый добавить если требуется):
<Test><test>Hello World!</test></Test>
Теперь я хочу его развязать. Я получаю (на самом деле не удивительно):
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Test"). Expected elements are <{http://aschema/}Test>
Есть ли способ я могу определить, к моему распаковать процесс, что использовать, когда речь идет по этой проблеме?
Я не могу изменить схему - это промышленный стандарт.
Я не могу изменить объект Test
- он генерируется из схемы.
Все ссылки на эту ошибку, которую я могу найти, могут указывать либо на изменение класса java, либо на изменение схемы - я не могу сделать ни одну из этих вещей.
Обратите внимание, что мой класс Test является попыткой создать Minimal, Complete, Tested and Readable example. Реальные объекты, которые я хочу развернуть, намного сложнее.
возможно дубликат [JAXB с объявленной распаковать типа не заселить полученный объект с данными] (http://stackoverflow.com/questions/17214930/jaxb-unmarshal-with-declared -type-does-not-populate-the-result-object-with-da) –