powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметризованные классы и unmarshal
3 сообщений из 3, страница 1 из 1
Параметризованные классы и unmarshal
    #37796506
old.rubl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@XmlRootElement(name = "mList")
@XmlSeeAlso({mClass.class, opClass.class})
public class workList<T>  {
	
	@XmlAnyElement
	private List<T> mList;
	
	public List<T> getMList() {
		if (mList == null) {
			mList = new ArrayList<T>();
		}

		return mList;
	}

	public void setMList(List<T> mList) {
		this.mList = mList;
	}

}



и клиент получающий данные с веб сервиса


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        URL url = new URL("http://localhost:8080/rest");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", "application/xml");

       JAXBContext xmlBindingContext = JAXBContext.newInstance(mClass.class, opClass.class,workList.class);
        InputStream xml = conn.getInputStream();
        workList<mClass> ret = (workList<mClass>) xmlBindingContext.createUnmarshaller().unmarshal(xml);

            if(ret!=null){
                    for(mClass p:ret.getMList()){
                        System.out.println(p.toString());
                    }
            }



данные приходят клиенту, но при попытке в цикле обратиться к списку выдает ошибку

Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to mClass

пробовал так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        Client client = Client.create();
        WebResource resource = client.resource("http://localhost:8080");


        workList<mClass> ret = resource.path("rest")
                .accept(MediaType.APPLICATION_XML_TYPE)
                .get(workList<mClass>);
            if(ret!=null){
                    for(mClass p:ret.getMList()){
                        System.out.println(p.toString());
                    }
            }



то же самое
при этом если отдельно вызывать mClass, то все работает нормально

Подскажите в какую сторону копать???
...
Рейтинг: 0 / 0
Параметризованные классы и unmarshal
    #37796539
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему проблема в XmlAnyElement. JAXB не разобрался в какой конкретный тип десериализовать объекты, поэтому в списке у вас оказались DOM элементы. Посмотрите документацию по этой аннотации.
...
Рейтинг: 0 / 0
Параметризованные классы и unmarshal
    #37796602
old.rubl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@XmlRootElement(name = "mList")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({mClass.class, opClass.class})
public class workList<T>  {
	
	@XmlAnyElement(lax=true)
	private List<T> mList;
	
	public List<T> getMList() {
		if (mList == null) {
			mList = new ArrayList<T>();
		}

		return mList;
	}

	public void setMList(List<T> mList) {
		this.mList = mList;
	}

}



вот так работает
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметризованные классы и unmarshal
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]