我正在尝试通过JAXB和Java Bean读取xml的属性:
这是完整的xml:

    <dad xml:lang="en">
    </dad>


我需要获取lang属性:
我的Java bean表示如下:
这是xml的Java表示形式:

    @XmlRootElement(name = "dad")
    public class dad {
    @XmlAttribute(namespace = "xml", required=true, name = "lang")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String xmlLang;
    public String getXmlLang() {
    return xmlLang;
    }

    public void setXmlLang(String value) {
    this.xmlLang = value;
    }
    }


这是我在解组时使用的代码:

    JAXBContext jc = JAXBContext.newInstance("dad.model");
    Unmarshaller unmarshaller = jc.createUnmarshaller();
    dad doc = (dad) unmarshaller.unmarshal(new InputStreamReader(new FileInputStream(dad),"UTF-8"));
    System.err.println(doc.getXmlLang());


但这给了我空吗?
请帮忙。
谢谢

最佳答案

命名空间不是xmlxml只是标识符。实际的保留名称空间是http://www.w3.org/XML/1998/namespace。所以你的注释应该是

@XmlAttribute(namespace = "http://www.w3.org/XML/1998/namespace", required = true, name = "lang")

10-04 11:58