我正在为我的大学做一个项目。 我有两个类“Email_info”和“联系人”。在“联系人”课程中,我制作了一个“Email_info”类型的Arraylist。此类联系人用于将数据添加到XML文件(“contacts.xml”),并使用email_info类的变量。问题是每当我在解组文件后尝试访问此“contacts.xml”文件的元素时,我得到的地址为“mailwidgetaa.Email_info@12d3a4e9”而不是实际数据(应该是e_id- abc @gmail。 com,pass-password)。那么如何获取实际数据呢?
下面的是完整的代码::
package mailwidgetaa;
@XmlRootElement
public class Contacts {
List<Email_info> contacList = new ArrayList<Email_info>();
@XmlElement
public List<Email_info> getContacList() {
return contacList;
}
public void setContacList(List<Email_info> contacList) {
this.contacList = contacList;
}
}
@XmlRootElement
class Email_info {
String e_id;
String u_name;
String pass;
@XmlElement
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
@XmlElement
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
@XmlElement
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
public class Mailwidgetaa {
public static void main(String[] args) {
contatcs con = new contacts();
con = null;
try {
JAXBContext jaxbc1 = JAXBContext.newInstance(Contacts.class);
Unmarshaller unmarsh = jaxbc1.createUnmarshaller();
con = (Contacts) unmarsh.unmarshal(new File("contacts.xml"));
} catch (Exception e) {
System.out.println("Exception " + e.getMessage());
}
Email_info ein = new Email_info();
ein.setE_id(ui);
ein.setU_name(un);
con.getContacList().add(ein);
try {
JAXBContext jaxbc = JAXBContext.newInstance(Contacts.class);
Marshaller marsh = jaxbc.createMarshaller();
marsh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marsh.marshal(con, new File("contacts.xml"));
} catch (JAXBException e) {
System.out.println("EXCEPTION" + e.getMessage());
}
}
Iterator e= con.contacList.iterator();
while(e.hasNext()){
System.out.println(e.next());
}
}
答案 0 :(得分:1)
那是因为你还没有在Email_Info类中实现toString方法。实现它像:
@Override
public String toString() {
return "e_id: " + e_id + " u_name: " + u_name + " pass: " + pass;
}