Надеюсь, это не слишком сложный вопрос. Я пытаюсь десериализовать XML в POJO со 2-го уровня XML, но после поиска и пробования многих ответов на другие вопросы, подобные этому, я все еще пытаюсь найти что-то для этого уровня.
XML (который предоставляется, и я не могу изменить его), похож на этот
<?xml version="1.0" encoding="UTF-8"?>
<ns0:InputRequest xmlns:ns0="OW">
<ns0:FMan>
<ns0:CInc>
<ns0:Act>Sample</ns0:Act>
<ns0:Op>Sample</ns0:Op>
<ns0:Int>AppInt</ns0:Int>
</ns0:CInc>
</ns0:FMan>
</ns0:InputRequest>
Мне нужно только десериализовать CInc (будет только когда-либо один) в мой POJO, который выглядит как
public class CInc extends InputRequest {
@JacksonXmlProperty(namespace = "ns0", localName = "Act")
private String action;
@JacksonXmlProperty(namespace = "ns0", localName = "Op")
private String operation;
@JacksonXmlProperty(namespace = "ns0", localName = "Int")
private String intName;
// Usual Getters, Setters, etc
}
Я расширяю абстрактный класс верхнего уровня следующим образом
@JacksonXmlRootElement(namespace = "ns0", localName = "InputRequest")
public class InputRequest { }
МОЙ Java-код похож на
XmlMapper xmlMapper = new XmlMapper();
CInc cInc = xmlMapper.readValue(content, CInc.class);
Сбой из-за отсутствия элемента FMan.
Из другого ответа я попытался отключить FAIL_ON_UNKNOWN_PROPERTIES, как это
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
CInc cInc = xmlMapper.readValue(content, CInc.class);
Это устраняет ошибку, но все значения в POJO равны нулю.
Я также попытался поместить другой абстрактный класс для элемента 'FMan', который расширяет 'InputRequest', а затем изменил CInc для расширения FMan, т.е.
public class FMan extends InputRequest {
...
и
public class CInc extends FMan {
...
Но это совсем не помогает. Я чувствую, что ответ - это что-то глупое, что мне не хватает, но я действительно изо всех сил пытаюсь получить ответ на этот вопрос, поэтому любая помощь будет принята с благодарностью.