如何使用JAXB

时间:2018-01-22 13:22:43

标签: xml namespaces jaxb

我刚开始学习XML和JAXB,做了一些如何编组和解组数据的例子。但是,我仍然遇到使用命名空间解析XML的问题。任何人都可以帮助我这个例子

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Uuid xmlns:ns2="com/mypackage/test">
    <value>123456789</value>
</ns2:Uuid>

这是我创建的课程

@XmlRootElement (name = "Uuid", namespace = "com/mypackage/test")
public class Uuid {


protected String value;

@XmlElement(namespace = "ns2")
public String getValue() {
    return this.value;
}

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

获取空输出

Uuid uuid = null;
    JAXBContext jbContext;
    try {
        jbContext = JAXBContext.newInstance(Uuid.class);
        Unmarshaller jbUnmarshaller = jbContext.createUnmarshaller();
        uuid = (Uuid) jbUnmarshaller.unmarshal(file);

        System.out.println(uuid.getValue());
    } catch (JAXBException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

由于

1 个答案:

答案 0 :(得分:0)

您在value对象的Uuid字段上声明了命名空间,而xml值元素没有命名空间。

删除@XmlElement注释中的命名空间,使用Uuid根元素中的xmlns属性向xml添加默认命名空间,或者明确地将命名空间添加到元素中<ns2:value>94305</ns2:value>

任何这些选项都可以解决您的问题。