Java JAXB解组返回属性的空值
你能诊断一下为什么我的代码会输出[null,null,null,null]:Java JAXB解组返回属性的空值,java,xml,jaxb,Java,Xml,Jaxb,你能诊断一下为什么我的代码会输出[null,null,null,null]: Unmarshaller m = JAXBContext.newInstance(Roles.class).createUnmarshaller(); Roles root = m.ummarshal(new FileReader("test.xml")); System.out.println(root); 我尝试在eclipse中调试,但setter和getter处的断点没有命中 test.xml <?xm
Unmarshaller m = JAXBContext.newInstance(Roles.class).createUnmarshaller();
Roles root = m.ummarshal(new FileReader("test.xml"));
System.out.println(root);
我尝试在eclipse中调试,但setter和getter处的断点没有命中
test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Roles>
<Ele Id="1" Value="Yes"/>
<Ele Id="2" Value="Yes"/>
<Ele Id="3" Value="No"/>
<Ele Id="4" Value="Yes"/>
</Roles>
我自己解决了这个问题
您需要在
getId()
和getValue()
上方写入:@xmldattribute(name=“Id”)
&@xmldattribute(name=“Value”)
,而不是@xmldattribute
。标识符名称未被提取。问题在于您没有遵循Java命名约定:变量需要以小写字母开头。如果使用小写变量名和元素名,则无需明确列出名称:
@XmlAttribute
private String id;
public String getId() {return id;}
public void setId(String id) {id = id;}
及
在这种情况下,您可以将其作为答案发布,并在几天内接受。
public class Ele {
@XmlAttribute
private String Id;
@XmlAttribute
private String Value;
public Ele(){super();}
public String getId() {return Id;}
public void setId(String id) {Id = id;}
public String getValue() {return Value;}
public void setValue(String value) {Value = value;}
public String toString() { if(Id == null || Value == null) return null; else return Id + Value;}
}
@XmlAttribute
private String id;
public String getId() {return id;}
public void setId(String id) {id = id;}
<?xml version="1.0" encoding="UTF-8" ?>
<Roles>
<Ele id="1" value="Yes"/>
<Ele id="2" value="Yes"/>
<Ele id="3" value="No"/>
<Ele id="4" value="Yes"/>
</Roles>