无法打印Javax对象内容

时间:2018-01-22 21:19:29

标签: java jaxb

我正在尝试使用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>

非常感谢任何帮助。

谢谢!

1 个答案:

答案 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 + “]”; } 在您的客户类