Не удается прочитать текст сообщения из xml — файла с помощью java

#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 .