Заставить JacksonXML десериализовать необработанный XML как String
У меня есть строка запроса XML, поступающая в виде текстового содержимого, но Джексон идентифицирует ее как теги XML. Я пытался использовать JacksonXMLText, но это не помогает.
<Reference>
<Request><?xml version="1.0" encoding="UTF-8" ?><Quote
sess="JAKE_OSCAR_EU" language="ENG" Country="US">
</Quote>
</Request>
</Reference>
Это бросает мне исключение
com.ctc.wstx.exc.WstxParsingException: Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs.
1 ответ
Я думаю, что вам нужно написать десериализатор клиента, читающий ту часть дерева, которую вы хотите прочитать Raw. Вот один пример реализации:
@JsonSerialize(using = RawObjectSerializer.class)
@JsonDeserialize(using = RawObjectDeserializer.class)
public class RawObject {
public final String value;
public RawObject(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
открытый класс RawObjectDeserializer расширяет StdDeserializer {
public RawObjectDeserializer() {
super(RawObject.class);
}
@Override
public RawObject deserialize(JsonParser parser, DeserializationContext context) throws IOException {
return new RawObject(parser.getCodec().readTree(parser).toString());
}
}