2014-12-23 3 views
0

У меня странное требование для генерации XML-документа. Мне нужно добавить атрибуты xml, основанные на значении других тегов.JAXB: создавать атрибуты XML динамически на основе значений

В приведенном ниже xml для тегов Row мне нужно отобразить Column1 значения на основе значений в теге <table>. Как двухмерная матрица.

Ex: Если у меня есть значение в моей <table> как <table name="table1" row="1" column="1" >

Тогда в моей <Row> тега нужно добавить атрибут как: Column1 (Column тег имя атрибута) = "table1" (таблица тегов имя атрибута)

Я генерирую значение для этой ассоциации, но как я могу создать на лету теги xmlAttribute, как это?

Мне нужно создать свой XML таким способом ..

<Tree name="" desc="" title="" > 
    <Column> 
     <Column name="Column1" desc="" group="" id="1"/> 
    </Column> 
    <Row> 
     <Row id =1 name=" " desc="" ="" Column1 = "table1"> 
      <Row id = 2 name="" desc="" Column1 = "table2" /> 
     </Row> 
     <Row id = 3 name=" " desc="" id="" Column1 = "table3" /> 
    </Rows> 
    <table> 
     <table name="table1" row="1" column="1" > 
     <table name="table2" row="2" column="1" > 
      <table name="table3" row="3" column="1" > 
    </table> 
</Tree> 

ответ

0

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

public class Row { 
    private Map<QName,Object> any; 
    private String name; 
    private String type; 

    @XmlAnyAttribute 
    public Map<QName,Object> getAny(){ 
    if(any == null){ 
     any = new HashMap<QName,Object>(); 
    } 
    return any; 
    } 

    @XmlAttribute 
    public String getName(){ 
    return name; 
    } 
    public void setName(String value){ 
    name = value; 
    } 
    @XmlAttribute 
    public String getType(){ 
    return type; 
    } 
    public void setType(String value){ 
    type = value; 
    } 
} 

Если у вас нет имен в использовании, установка атрибута выглядит следующим образом:

Row r1 = new Row(); 
r1.getAny().put(new QName("Column1"), "table1");