Отказ от ответственности: хотя я и опоздал на 8 лет, я добавляю этот ответ для потерянных душ, таких как я, пытаясь понять автоматическую генерацию java-файлов из DTD.
Вы можете настроить проект в целомпространства имен для работы с unmarshaller непосредственно в файле project-info.java с помощью параметра @XmlSchema.
Этот файл должен автоматически генерироваться xjc при генерации классов из схемы, однако он выглядит как xjcне автоматически генерирует файл package-info.java при генерации из DTD!
Однако вы можете вручную создать этот файл и добавить его в тот же пакет, что и файлы, сгенерированные xjc.
Файл будет выглядеть следующим образом:
package-info.java:
@XmlSchema(
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns = {
@XmlNs(prefix="xlink", namespaceURI="http://www.w3c.org/1999/xlink"),
@XmlNs(prefix="namespace2", namespaceURI="http://www.w3c.org/1999/namespace2")
})
package your.generated.package.hierarchy;
import javax.xml.bind.annotation.*;
Вы можете добавить столько пространств имен, сколько требуется, простодобавьте новую строку в форме:
@XmlNs(prefix="namespace", namespaceURI="http://www.uri.to.namespace.com")
Преимущество такого подхода по сравнению с редактированием сгенерированного @XmlAttribute
состоит в том, что вам не нужно менять каждый генXmlAttribute, и вам не нужно вручную удалять пространства имен из переменной имени XmlAttribute.