Есть такой код, который получает поток xml, переводит его в json и возвращает строку json
public static String xmlToJson(InputStream inputStream) {
try {
InputFactoryImpl inputFactory = new InputFactoryImpl();
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);
OutputFactoryImpl outputFactory = new OutputFactoryImpl();
outputFactory.setProperty(XMLStreamProperties.XSP_NAMESPACE_AWARE, Boolean.FALSE);
XmlMapper xmlMapper = new XmlMapper(new XmlFactory(inputFactory,outputFactory), new JacksonXmlModule());
xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
JsonNode node = xmlMapper.readTree(inputStream);
ObjectMapper jsonMapper = new ObjectMapper();
return jsonMapper.writeValueAsString(node);
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
Проблема в том, что когда у тега в xml есть аттрибут (testAttr)
![62440ee24256f518246839.png](https://habrastorage.org/webt/62/44/0e/62440ee24256f518246839.png)
то конечный json выглядит вот так, что не очень удобно. Хотелось бы к аттрибуту добавить префикс @, чтобы получилось @testAttr. Видел во многих онлайн конвертерах xml -> json такую возможность, но как сделать это с помощью jackson я не знаю.. И да, xml будет приходить в виде потока поэтому вариант с использованием каких-либо аннотаций от jackson не подходит