我正在尝试使用mkyong's JAXB Hello World example并且无法打印整个班级的内容,尽管我能够打印特定元素。输出应为:
Customer [name=mkyong, age=29, id=100]
100
29
这是我的输出:
xml_test.Customer@eed1f14
100
29
我目前在Windows 10机器上通过Netbeans 8.2运行Java 1.8。请注意,此处还有其他一些包含,因为我的下一步是使用客户对象列表(可能是另一个问题的主题)。
这是我的对象(我相信与他相同):
package xml_test;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@XmlRootElement
class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
这是我的代码:
package xml_test;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class XML_Test {
public static void main(String[] args) {
try {
File file = new File("S:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer);
/* Added for testing */
System.out.println(customer.id);
System.out.println(customer.age);
} catch (JAXBException e) {
e.printStackTrace();
}
}
这是我的数据文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
<age>29</age>
<name>mkyong</name>
</customer>
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
xml_test.Customer@eed1f14
这是在打印customer
对象时得到的。
由于您没有覆盖Object类方法public String toString()
,因此预期会得到什么。
所以,要获得此Customer [name=mkyong, age=29, id=100]
,您必须覆盖以下内容:
@Override
public String toString() {
return “Customer [name=” + name + “, age=” + age + “, id=” + id + “]”;
}
在您的客户类