@XmlType( propOrder = { "name", "capital", "foundation", "continent" , "population"} )
@XmlRootElement( name = "Country" )
public class Country
{
@XmlElement (name = "Country_Population")
public void setPopulation( int population )
{
this.population = population;
}
@XmlElement( name = "Country_Name" )
public void setName( String name )
{
this.name = name;
}
@XmlElement( name = "Country_Capital" )
public void setCapital( String capital )
{
this.capital = capital;
}
@XmlAttribute( name = "importance", required = true )
public void setImportance( int importance )
{
this.importance = importance;
}
...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Country importance="1">
<Country_Name>Spain</Country_Name>
<Country_Capital>Madrid</Country_Capital>
<Country_Foundation_Date></Country_Foundation_Date>
<Country_Continent>Europe</Country_Continent>
<Country_Population>45000000</Country_Population>
</Country>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Country importance="1">
<Country_Name>Spain</Country_Name>
<Country_Capital>Madrid</Country_Capital>
<Country_Foundation_Date></Country_Foundation_Date>
<Country_Continent name="Europe"/>
<Country_Population value="45000000"/>
</Country>
<?xml version="1.0" encoding="UTF-8"?>
<types>
<type name="Бинт">
<nominal>5</nominal>
<category name="медикаменты"/>
</type>
</types>
public class Category
{
private String name;
public String getName ()
{
return name;
}
@XmlAttribute(name = "name") //добавили аннотацию name ( name="медикаменты")
public void setName (String name)
{
this.name = name;
}
}
public class Type
{
private String nominal;
private String name;
private Category category;
public String getNominal ()
{
return nominal;
}
public void setNominal (String nominal)
{
this.nominal = nominal;
}
public String getName ()
{
return name;
}
@XmlAttribute(name = "name") //атрибут NAME для имени тега type (name="Бинт")
public void setName (String name)
{
this.name = name;
}
public Category getCategory ()
{
return category;
}
public void setCategory (Category category)
{
this.category = category;
}
}
@XmlSeeAlso({Type.class})
@XmlRootElement( name = "types" )
public class Types
{
List<Type> types;
public List<Type> gettypes()
{
return types;
}
/**
* element that is going to be marshaled in the xml
*/
@XmlElement( name = "type" )
public void settypes( List<Type> types )
{
this.types = types;
}
/**
* This method is not used by jaxb, just used for business reasons. In the case that this class
* would be generated using xml schemas definitions, this method has to be added to the
* generated class or to some helper or util one
*
* @param Type
*/
public void add( Type Type )
{
if( this.types == null )
{
this.types = new ArrayList<Type>();
}
this.types.add( Type );
}
@Override
public String toString()
{
StringBuffer str = new StringBuffer();
for( Type museum : this.types )
{
str.append( museum.toString() );
}
return str.toString();
}
}
Category category = new Category(); //Создали объект Категории для объекта type
category.setName("медикаменты"); //Прописали атрибут
Type type = new Type(); //Создаем объект TYPE.
type.setName("Бинт"); //Прописываем ему имя
type.setNominal("5"); // какие то данные в тег Nominal
type.setCategory(category); // добавили ссылку на объект Категории
Types types = new Types(); // создали "основной" объект
types.add(type); // положили в него все объекты типа Тайп (у нас он один)
// types.add(type2); // так добавляем еще типы.
JAXBContext jaxbContext = JAXBContext.newInstance( Types.class); //Указываем только "корневой" класс. Тот что самый верхний в иерархии (куда мы все и сложили)
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
jaxbMarshaller.marshal( types, new File( "test.xml" ) ); //сохранили в файл
jaxbMarshaller.marshal( types, System.out ); //показали в консоли чего там в файл сохранили.