JABX, создание файла и запись XML, Java

381
19 января 2017, 03:35

Изучаю JABX, написал маленький парсер, который вытягивает и сохраняет все в XML. Но столкнулся с проблемой, не могу добавить атрибут во вложенный элемент. Пытался создать еще один класс Param, но не смог всунуть его в элемент <offers> Вот param name= нужно добавить, что бы получилось как-то так:

<offers>
<offer available="true">
<categoryId>18069925</categoryId>
<name>testNameProduct1</name>
<param name="Состояние">Новое</param>
<param name="Цвет">Черный</param>
<param name="Вес">43<param>
</offer>
</offers>

Максимум, что получалось, это

<offers>
<offer available="true">
<categoryId>18069925</categoryId>
<name>testNameProduct1</name>
<param>Новое</param>
</offer>
</offers>

Части кода:

 Offers list = new Offers();
 for (int j = 0; j < 40; j++) {
            list.add(parseProduct(j, productLinks.get(j).toString()));
        }

метод:

 public static Offer parseProduct(int j, String str) {
 Offer offer = new Offer();
 offer.setName(name);
 offer.setChildrenAllowed(true);
 offer.setCategoryId(CategoryId);
 return offer;
 }

Класс Offers

@XmlRootElement(name = "offers")
public class Offers {
List<Offer> offers;
@XmlElement(name = "offer")
public void setOffers(List<Offer> offers) {
    this.offers = offers;
}
public List<Offer> getOffers() {
    return offers;
}
public void add(Offer offer) {
    if (this.offers == null) {
        this.offers = new ArrayList<Offer>();
    }
    this.offers.add(offer);

}
}

Класс Offer

@XmlRootElement(name = "offer")
public class Offer {
String name;
int categoryId;

@XmlElement(name = "name")
public void setName(String name) {
    this.name = name;
}
Boolean available;
@XmlAttribute(name = "available")
public void setChildrenAllowed(Boolean childrenAllowed) {
    this.available = childrenAllowed;
}
@XmlElement(name = "categoryId")
public void setCategoryId(int categoryId) {
    this.categoryId = categoryId;
}

public int getCategoryId() {
    return categoryId;
}
public String getName() {
    return name;
}
public Boolean getChildrenAllowed() {
    return available;
}
}
Answer 1

в класс Offer нужно добавить новый объект Param

public class Param
{
    private String content;
    private String name;
    public String getContent ()
    {
        return content;
    }
    public void setContent (String content)
    {
        this.content = content;
    }
    public String getName ()
    {
        return name;
    }
    public void setName (String name)
    {
        this.name = name;
    }
    @Override
    public String toString()
    {
        return "ClassPojo [content = "+content+", name = "+name+"]";
    }
}

public class Offer
{
    private Param[] param;
    private String categoryId;
    private String name;
    public Param[] getParam ()
    {
        return param;
    }
    public void setParam (Param[] param)
    {
        this.param = param;
    }
............
}
READ ALSO
Отличие Bundle (SavedInstanceState) от SharedPreferences

Отличие Bundle (SavedInstanceState) от SharedPreferences

Разбирал для себя тему: как восстановить данные после сворачиванияПонял что нужно использовать Bundle (SavedInstanceState) или SharedPreferences

280
Java (Selenium) - получение ссылки из исходного кода

Java (Selenium) - получение ссылки из исходного кода

В Firefox с помощью инструмента "Исследовать элемент" в интересующем куске кода есть ссылки, которые хочу брать используя методы библиотеки...

326
Получить root path Java (Spring MVC)

Получить root path Java (Spring MVC)

Мне в крон-методе необходимо получить рутовый путьРанее, в контроллерах, я использовать UriComponentBuilder, но в кроны лежат в сервисах и никакой...

351