Я использую библиотеку 'com.thoughtworks.xstream:xstream:1.4.10' и пытаюсь анализировать xml-файлы.
Брокер — это корневой элемент, внутри которого есть другие теги.
<broker>
<othertags/>
</broker>
Проблема в том, что когда я создаю файл xml, он генерируется правильно, но не может прочитать файл.
@XStreamAlias("broker")
public static class Broker {
Во время генерации файла он может конвертировать класс Broker, но не наоборот. Все остальные классы и список отображаются правильно, но корень @XStreamAlias не работает во время чтения.
Любые указатели относительно того, почему, будут очень полезны.
Исключение, которое я получаю:
com.thoughtworks.xstream.mapper.CannotResolveClassException: broker
Еще один вопрос: при вызове xStream.fromXML(responseString) как xStream узнает, какой класс использовать? Скажем, у меня есть два класса с одинаковым псевдонимом




XStream по умолчанию не обрабатывает аннотации. Добавьте следующее перед десериализацией вашего xml-контента.
XStream xstream = new XStream();
xstream.processAnnotations(Broker.class);
при вызове xStream.fromXML(responseString) как xStream узнает, какой класс использовать? Скажем, у меня есть два класса с одинаковым псевдонимом
Автоопределение может работать только для сериализации. При десериализации вам нужно указать XStream, как обрабатывать каждый тип. Вот выдержка из официальной документации: «Поэтому нет проблем сериализовать граф объектов в XML, так как XStream будет знать обо всех типах заранее. This is no longer true at deserialization time. XStream has to know the alias to turn it into the proper type, но он может найти аннотацию для псевдонима, только если он обработал напишите заранее."
Что касается совместного использования одного и того же псевдонима, это не кажется хорошей практикой: см. github.com/x-stream/xstream/issues/102.
Я на самом деле использую автоопределение
xStream.autodetectAnnotations(true);