JaxB UNSharshalling Проблема - PullRequest
       1

JaxB UNSharshalling Проблема

2 голосов
/ 28 ноября 2010

Я попытался запустить тот же пример в следующей теме:

JAXB Annotations - Сопоставление интерфейсов и @ XmlElementWrapper

но я получаю следующее исключение:

неожиданный элемент (uri: "", local: "dog"). Ожидаемые элементы: <{<strong> странный символ вопросительного знака }> catchAll>

...

Есть идеи, почему я получаю это исключение?

1 Ответ

1 голос
/ 01 декабря 2010

Мне удалось запустить пример, но после использования тега XmlElements с java.uill.List Вот код:

@XmlRootElement class Zoo {</p> <pre><code>@XmlElements({ @XmlElement(name = "Dog" , type = Dog.class), @XmlElement(name = "Cat" , type = Cat.class) }) private List<Animal> animals; public static void main(String[] args) throws Exception { Zoo zoo = new Zoo(); zoo.animals = new ArrayList<Animal>(); Dog doggy = new Dog(); doggy.setDogProp("Doggy"); Cat catty = new Cat(); catty.setCatProp("Catty"); zoo.animals.add(doggy); zoo.animals.add(catty); JAXBContext jc = JAXBContext.newInstance(Zoo.class, Dog.class, Cat.class); Marshaller marshaller = jc.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(zoo, os); System.out.println(os.toString()); Unmarshaller unmarshaller = jc.createUnmarshaller(); unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler()); Zoo unmarshalledZoo = (Zoo) unmarshaller.unmarshal(new ByteArrayInputStream(os.toByteArray())); if (unmarshalledZoo.animals == null) { System.out.println("animals was null"); } else if (unmarshalledZoo.animals.size() == 2) { System.out.println("it worked"); } else { System.out.println("failed!"); } } public interface Animal { } @XmlRootElement public static class Dog implements Animal { private String dogProp; public String getDogProp() { return dogProp; } public void setDogProp(String dogProp) { this.dogProp = dogProp; } } @XmlRootElement public static class Cat implements Animal { private String catProp; public String getCatProp() { return catProp; } public void setCatProp(String catProp) { this.catProp = catProp; } }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...