Unmarshalled объект ссылается на себя JAXB - PullRequest
0 голосов
/ 04 июня 2019

Мне наконец удалось разархивировать вложенный XML-узел с одинаковыми именами (Parent и Child). Это означает, что возвращается объект, имеющий атрибут, ссылающийся на тот же объект. Как только я пытаюсь создать экземпляр объекта, я получаю java.lang.StackOverflowError. Я действительно понимаю, почему это происходит, но есть ли способ избежать этого?

TestDetails.java

@XmlAccessorType(XmlAccessType.FIELD)
public class TestDetails{

public TestDetails() {}

@XmlElement(name="A")
private String A;

@XmlElement(name="B")
private String B;   

@XmlElement(name="TestDetails")
private List<TestDetails> TestDetails = new ArrayList<TestDetails>();

}

XML-структура:

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <GetTestlistWithConnectionsResponse xmlns="http://tempuri.org/">
             <GetTestlistWithConnectionsResult xmlns:a="http://schemas.datacontract.org/XXX" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:Error i:nil="true"/>
                <a:TestDetails>
                   <a:TestDetails>
                      <a:A>A</a:A>
                      <a:B>B</a:B>
                   </a:TestDetails>
                </a:TestDetails>
            </GetTestlistWithConnectionsResult>
           </GetTestlistWithConnectionsResponse>
       </s:Body>
    </s:Envelope>

Есть ли распространенная практика, как справляться с этим? Мне нужно получить доступ к значениям внутри вложенного объекта TestDetails. Предлагает ли JAXB обходной путь, например, переименование, чтобы избежать этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...