java bean表示读取前缀:attrName

时间:2013-12-30 01:07:10

标签: java jaxb

我试图通过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());

但它让我无效?! 请帮忙。 感谢

1 个答案:

答案 0 :(得分:1)

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

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