2013-03-19 2 views
0

저는 jaxb를 사용하고 있습니다. 이해할 수 있도록 각 요소 및 속성 필드에 대해 정의하고 jaxb는이 속성을 다시 정의하고이 elemnt에 값을 넣습니다.JAVA-JAXB/필드를 클래스로 정의

<div class="hello"> Hi </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

완벽하게 잘 작동한다. 그것은 attrubute 클래스를 인식하지 못합니다. –

관련 문제