0

私はjaxbを使用していますが、理解したように、要素と属性フィールドごとに定義し、jaxbはこの属性を再構成して、この要素に値を入れます。私の属性の1つがクラスであるという私の問題:

<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

私に何ができる?

4

1 に答える 1

3

XmlAttributeのnameプロパティを使用して、マッピング変数に別の名前を指定できます。

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;
        }
    }
}
于 2013-03-19T06:30:20.960 に答える