2

У меня есть Rss-канал, который я бы хотел проанализировать на Java с помощью Simple Framework. У меня проблемы с двумя элементами с тем же именем, но у одного из них есть пространство имен. Вот пример XML:Simple-Framework: повторяющаяся аннотация (другое пространство имен)

<?xml version="1.0" encoding="UTF-8"?> 
<rss xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <item> 
     <title>Regular Titel</title> 
     <dc:title>Dc Titel</dc:title> 
    </item> 
</rss> 

В настоящее время мой Item.class выглядит следующим образом:

@Root 
public class Item { 

    @Namespace(reference = "http://purl.org/dc/elements/1.1/", prefix = "dc") 
    @Element(name="title") 
    public String dcTitle; 

    @Element 
    public String title; 
} 

Это, очевидно, вызывает PersistenceException (Дублированный аннотацию имя 'заголовка' на поле 'название' .. ..), но я действительно не знаю, как я должен это делать. Может кто-то, пожалуйста, помогите мне понять это!

UPDATE

Althought решение работает, теперь у меня есть проблемы сериализации объектов. Пространства имен, которые я объявляю, не назначаются элементам на выходе xml.

ответ

1

Попробуйте

@Root 
public class Item { 

    @Namespace(reference = "http://purl.org/dc/elements/1.1/", prefix = "dc") 
    @Path("title[1]") 
    @Text 
    public String dcTitle; 

    @Path("title[2]") 
    @Text 
    public String title; 
} 
+0

Работает как очарование. Благодаря!! – AlexD

+0

Если это сработает, пожалуйста, ** примите ** ответ (см. Здесь: http://stackoverflow.com/faq#howtoask) – ollo

+1

Я был слишком поспешным. Когда я сериализую объект, префикс пространства имен отсутствует. – AlexD

0

Пробовали ли вы это?

@Root 
@Namespace(reference = "http://purl.org/dc/elements/1.1/", prefix = "dc") 
public class Item { 

    @Element (name = "dc:title") 
    public String dcTitle; 

    @Element (name = "title") 
    public String title; 
} 
Смежные вопросы