package com.javarush.task.task33.task3308;
import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@XmlType(name = "shop")
@XmlRootElement
public class Shop {
@XmlMixed
public Goods goods;
public int count;
public double profit;
public String[] secretData;
@XmlType(name = "goods")
@XmlRootElement
public static class Goods {
//???
public List<String> names = new ArrayList<>();
}
}
package com.javarush.task.task33.task3308;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
/*
Создание класса по строке xml
*/
public class Solution {
public static void main(String[] args) throws JAXBException {
String xmlData =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
"<shop>\n" +
" <goods>\n" +
" <names>S1</names>\n" +
" <names>S2</names>\n" +
" </goods>\n" +
" <count>12</count>\n" +
" <profit>123.4</profit>\n" +
" <secretData>String1</secretData>\n" +
" <secretData>String2</secretData>\n" +
" <secretData>String3</secretData>\n" +
" <secretData>String4</secretData>\n" +
" <secretData>String5</secretData>\n" +
"</shop>";
StringReader reader = new StringReader(xmlData);
JAXBContext context = JAXBContext.newInstance(getClassName());
Unmarshaller unmarshaller = context.createUnmarshaller();
Shop o = (Shop) unmarshaller.unmarshal(reader);
System.out.println(o.toString());
System.out.println(String.valueOf(o.profit));
System.out.println(String.valueOf(o.count));
for (int i = 0; i < o.secretData.length; i++) {
System.out.println(o.secretData[i]);
}
System.out.println(String.valueOf(o.goods));
}
public static Class getClassName() {
return new Shop().getClass();
}
}