我刚开始学习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();
}
由于
答案 0 :(得分:0)
您在value
对象的Uuid
字段上声明了命名空间,而xml值元素没有命名空间。
删除@XmlElement
注释中的命名空间,使用Uuid根元素中的xmlns
属性向xml添加默认命名空间,或者明确地将命名空间添加到元素中<ns2:value>94305</ns2:value>
)
任何这些选项都可以解决您的问题。