[英]JaxB Unmarshaller Error
我正在嘗試使用JaxB解組基本XML文件,但是代碼有問題。 編組器正常運行,但是解組器返回com.project.test.Jaxb@094jufd34c
,而不是返回XML文件中的com.project.test.Jaxb@094jufd34c
。 (課程名稱后跟一個“ @”,字母和數字隨機組合)。 這是下面的代碼。 感謝您的幫助或想法。
XML帶注釋的類:
@XmlRootElement
public class Jaxb {
String newString;
public String getNewString() {
return newString;
}
@XmlElement
public void setNewString(String newString) {
this.newString = newString;
}
}
馬歇爾:
public class Marshal {
Jaxb newWindow = new Jaxb();
String xmlString;
void marshal(String[] args) {
xmlString="a,b,c";
newWindow.setNewString(xmlString);
try {
File file = new File("newXml.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(newWindow, file);
jaxbMarshaller.marshal(newWindow, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
解組員:
public class unmarshal {
static String unMarshal() {
String unmarshString="";
try {
File x = new File("newXml.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Jaxb newUnmarshal = (Jaxb) jaxbUnmarshaller.unmarshal(x);
unmarshString = newUnmarshal.toString();
} catch (JAXBException e) {
e.printStackTrace();
System.out.print("error");
}
return unmarshString;
}
}
com.project.test.Jaxb@094jufd34c
是Jaxb
類上默認toString()
實現的輸出。 覆蓋toString
以輸出是否需要輸出,例如
public String toString() {
return newString;
}
但是,我猜測由於您的unmarshal
方法專門返回了一個String,所以您真正想要做的只是unmarshString = newUnmarshal.getNewString()
而不是unmarshString = unmarshal.toString()
班級名稱,后跟一個“ @”,字母和數字隨機組合
它不是隨機的,由javadoc為Object#toString
返回對象的字符串表示形式。 通常,toString方法返回一個“以文本形式表示”此對象的字符串。 結果應該是簡潔易懂的表示形式,便於人們閱讀。 建議所有子類都重寫此方法。
類Object的toString方法返回一個字符串,該字符串包括該對象是其實例的類的名稱,符號字符“ @”以及該對象的哈希碼的無符號十六進制表示形式。 換句話說,此方法返回的字符串等於:
getClass().getName() + '@' + Integer.toHexString(hashCode())
這與XML或JAXB無關,這只是在類上定義toString
的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.