2013-03-19 62 views
0

我使用jaxb,并且据我了解,我们为每个元素和属性字段定义,并且jaxb重新调整此属性,并将其值放入此元素中。我的问题,我的属性之一是类:JAVA-JAXB /定义类为字段

<div class="hello"> Hi </div> 

所以我想在类div来定义,下一个:

String class; 
public String getClass() { 
    return class; 
} 

@XmlAttribute 
public void setClass(String class) { 
    this.class = class; 
} 

但我不能因为 - Syntax error on token "class", invalid VariableDeclarator

什么我可不可以做?

回答

3

您可以使用XmlAttributename属性为映射变量指定一个不同的名称。

String className; 
public String getClassName() { 
    return clazz; 
} 

@XmlAttribute(name="class") 
public void setClassName(String className) { 
    this.className = className; 
} 

这是工作完全正常

import java.io.StringReader; 
import java.io.StringWriter; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

public class Test { 

    public static void main(String[] args) throws Exception { 
     JAXBContext context = JAXBContext.newInstance(Div.class); 

     Div div = new Div(); 
     div.setClassName("new-item"); 
     StringWriter sw = new StringWriter(); 
     context.createMarshaller().marshal(div, sw); 
     System.out.println(sw.toString()); 

     String s = "<div class=\"hello\"> Hi </div>"; 
     Div object = (Div) context.createUnmarshaller().unmarshal(new StringReader(s)); 
     System.out.println(object.getClassName()); 

    } 

    @XmlType(name = "div") 
    @XmlRootElement(name = "div") 
    public static class Div { 

     private String className; 

     @XmlAttribute(name = "class") 
     public String getClassName() { 
      return className; 
     } 

     public void setClassName(String className) { 
      this.className = className; 
     } 
    } 
} 
+0

这是行不通的。它不承认类的属性。 – 2013-03-19 08:07:20