У меня есть XML следующим образом.
<TRX_MESSAGE>
<MESSAGE>
<MESSAGE_ID>generate_qr_ack</MESSAGE_ID>
<QR_CODE>7D3796E48</QR_CODE>
<RESP_CODE>00</RESP_CODE>
<RESP_DESC>success</RESP_DESC>
</MESSAGE>
</TRX_MESSAGE>
Я хочу преобразовать этот XML в класс Java, но в моем классе модели Java нет полей TRX_MESSAGE
или MESSAGE
.
public class QR_Code_Resp
{
@JsonProperty("MESSAGE_ID")
private String MESSAGE_ID;
@JsonProperty("QR_CODE")
private String QR_CODE;
@JsonProperty("RESP_CODE")
private String RESP_CODE;
@JsonProperty("RESP_DESC")
private String RESP_DESC;
//GETTERS AND SETTERS
@XmlElement(name = "MESSAGE_ID")
public String getMESSAGE_ID()
{
return MESSAGE_ID;
}
public void setMESSAGE_ID(String MESSAGE_ID)
{
this.MESSAGE_ID = MESSAGE_ID;
}
@XmlElement(name = "QR_CODE")
public String getQR_CODE()
{
return QR_CODE;
}
public void setQR_CODE(String sQR_CODE)
{
this.QR_CODE = sQR_CODE;
}
@XmlElement(name = "RESP_CODE")
public String getRESP_CODE()
{
return RESP_CODE;
}
public void setRESP_CODE(String RESP_CODE)
{
this.RESP_CODE = RESP_CODE;
}
@XmlElement(name = "RESP_DESC")
public String getRESP_DESC()
{
return RESP_DESC;
}
public void setRESP_DESC(String RESP_DESC)
{
this.RESP_DESC = RESP_DESC;
}
}
Я пытаюсь преобразовать свой XML в объект Java следующим образом. Обратите внимание, что строка 'test' в первой строке - это ввод XML, о котором я упоминал ранее.
StringReader sr = new StringReader(test);
JAXBContext jaxbContext = JAXBContext.newInstance(QR_Code_Resp.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
QR_Code_Resp response = (QR_Code_Resp) unmarshaller.unmarshal(sr);
И я получаю сообщение об ошибке следующим образом. Ошибка довольно очевидна, но мне нужен обходной путь, чтобы мне не пришлось менять класс модели QR_Code_Resp.Есть ли способ для этого?
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"MESSAGE_ID"). Expected elements are (none)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:726)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:109)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1131)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:556)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:538)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:153)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3132)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:852)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)
at sockettest.ClientTest.main(ClientTest.java:56)
Заранее спасибо.:)