Я разбираю xml в объект, используя Simple Framework. Проблема в том, что xml имеет элементы с тем же именем, но с разными путями.Имя элемента уже используется простая структура
XML:
<prestashop>
<products>
<product>
<name>
<language id="1"> name </language>
</name>
<description>
<language id="1"> description </language>
</description>
<description_short>
<language id="1"> desc </language>
</description_short>
</product>
</products>
</prestashop>
мой класс отображается так:
@Root(name="prestashop")
public class Product{
@Element(name="language")
@Path("products/product/description_short[1]")
private String shortDesc;
@Element(name="language")
@Path("products/product/description[1]")
private String longDesc;
@Element(name="language")
@Path("products/product/name[1]")
private String name;
}
Но во время десериализации, это дает мне исключение:
org.simpleframework.xml.core.PersistenceException:
Element 'language' is already used with @org.simpleframework.xml.Element(data=false, name=language, required=true, type=void)
on field 'name' private java.lang.String model.Product.name at line 8
Как я могу сопоставить теги с тем же именем, но по разным путям?
если я сериализовать объект продукта он дает мне правильную структуру XML:
<prestashop xmlns="http://www.w3.org/1999/xlink">
<products>
<product>
<description_short>
<language>short</language>
</description_short>
<id_default_image href="path"/>
<description>
<language>long</language>
</description>
<name>
<language>aaa</language>
</name>
<price>10.0</price>
<id>1</id>
</product>
</products>
</prestashop>
Im десериализации как это:
product = new Product();
InputStream in = res.getResponse();
Serializer serializer = new Persister();
serializer.read(product, in,false);
XML, вы предоставили никоим образом не соответствует аннотациям, обеспечивает полный XML и определение класса для разумного ответа. –
Может быть, теперь это лучше? –