#java #jaxb #lombok #pojo
#Ява #джаксб #ломбок #пожо
Вопрос:
Я пытаюсь прочитать xml — файл. Мой xml-файл выглядит следующим образом:
lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?gt; lt;pickingOrderBeginEventMessage xmlns="http://www.xmlns.walmartstores.com/" xmlns:hdr="http://www.xmlns.walmartstores.com/Header/MessageHeader/1.4/" xmlns:flt="http://www.xmlns.walmartstores.com/1.0/"gt; lt;hdr:MessageHeadergt; lt;hdr:SubIdgt;SUB-EIC1lt;/hdr:SubIdgt; lt;/hdr:MessageHeadergt; lt;MessageBodygt; lt;RoutingInfogt; lt;SourceNodegt; lt;locationgt; lt;countryCodegt;USlt;/countryCodegt; lt;/locationgt; lt;cNodeIDgt;ALPHAlt;/cNodeIDgt; lt;/SourceNodegt; lt;/MessageBodygt;
У меня есть эта java-программа, которая считывает xml-файл:
public class TestAssertionForPickBegin { PickingOrderBeginEventMessage pickBegin; private static String readFromResources(String fileName) throws IOException { StringBuilder sb = new StringBuilder(); FileReader fr = new FileReader(fileName); BufferedReader br = new BufferedReader(fr); String contentLine = br.readLine(); while (contentLine != null) { sb.append(contentLine); contentLine = br.readLine(); } br.close(); return sb.toString(); } @BeforeTest public void beforeTest() throws IOException, JAXBException { String path = "file.xml"; File file = new File(path); String absolutePath = file.getAbsolutePath(); System.out.println(absolutePath); String xmlPickBegin = readFromResources(absolutePath); System.out.println("starts..."); System.out.println(xmlPickBegin); System.out.println("ends..."); pickBegin = Xml.xmlToObject(xmlPickBegin, PickingOrderBeginEventMessage.class); System.out.println(pickBegin); } }
Мой класс POJO PickingOrderBeginEventMessage выглядит следующим образом:
@XmlAccessorType(XmlAccessType.PROPERTY) @XmlRootElement(namespace="http://www.xmlns.walmartstores.com/") @Data public class PickingOrderBeginEventMessage implements Serializable { private static final long serialVersionUID = 1L; Maplt;String, Stringgt; messageHeader = new HashMaplt;gt;(); MessageBodyPickBegin messageBodyPickBegin; }
Когда я отлаживаю код, pickBegin не может получить значение тела сообщения, которое приходит как null.
Мой класс POJO MessageBody выглядит следующим образом:
@Data @XmlRootElement(name = "MessageBody") @XmlAccessorType(XmlAccessType.PROPERTY) public class MessageBodyPickBegin implements Serializable { private static final long serialVersionUID = 1L; RoutingInfo routingInfo; }
Когда я печатаю pickBegin, я получаю ts, дающий мне результат: PickingOrderBeginEventMessage(messageHeader={}, messageBodyPickBegin=null)
в то время как он должен давать это: (messageHeader={}, messageBody=MessageBody(routingInfo=RoutingInfo(sourceNode=SourceNode(location=Location(countryCode=US), cNodeID=alpha))
Может кто-нибудь, пожалуйста, помочь мне указать правильное направление? Спасибо.
Комментарии:
1. @Abra извините, что я вас скрутил, XML-это встроенный класс java, который я не писал.
2. Я не мог найти класс
Xml
.