我正在尝试通过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());
但这给了我空吗?
请帮忙。
谢谢
最佳答案
命名空间不是xml
。 xml
只是标识符。实际的保留名称空间是http://www.w3.org/XML/1998/namespace
。所以你的注释应该是
@XmlAttribute(namespace = "http://www.w3.org/XML/1998/namespace", required = true, name = "lang")