2010-10-28 1 views
1

У меня есть схемы со следующими атрибутами элемента схемы:JAXB в Java 6 не предварив правильный префикс пространства имен в XML-файле выстроил

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:abc="http://abc.example.com" targetNamespace="http://abc.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified"> 

я мог скомпилировать его и получить классы Java. Используя эти классы, я заполнил данные в объекте и упорядочил его, чтобы получить XML-файл.

Но элементы XML в этом сортированном файле не имеют префикса "abc".

Я немного изменил использование XMLStreamWriter.setPrefix во время marshalling, и я мог бы получить XML-файл со всеми элементами с префиксом «abc».

Теперь, когда я пытаюсь маршализацией тот же файл XML, он выдает ошибку говоря:

[org.xml.sax.SAXParseException: Приставка «а» для элемента «а: Name». Не связан]

Пожалуйста, помогите мне в том, как сообщить JAXB, что abc является правильным префиксом.

Спасибо Прадееп

ответ

1

Имя префикса не имеет смысла. Все, что он делает, - это соединение между пространством имен и тегами, принадлежащими этому пространству имен. Является ли префикс abc или namespace01 или нет префикса, потому что используется пространство имен по умолчанию, не имеет значения. Насколько я знаю, вы не можете принудительно использовать префикс или определенное имя префикса в JAXB.

+1

благодаря Musikk, теперь я понимаю. Но если мы хотим использовать наш собственный префикс, мы можем использовать JAXB RI, который содержит NamespacePrefixMapper вместе с JAXB с Java 6. [включить JAXB RI в classpath]. marshaller.setProperty ("com.sun.xml.bind.namespacePrefixMapper", новое пространство именMapper()); – pradeep

+1

@pradeep: Ницца. Даже если вы зависите от конкретной реализации, это хорошо знать. – musiKk

+0

Не полностью соглашайтесь на «бессмысленную» часть. Это может быть «бессмысленно» с технической точки зрения. Но предположим, что, например, - в любом случае - человек увидит или работает с XML, может быть важно иметь возможность устанавливать префиксы пространства имен значимым образом ... – mmey