В настоящее время я работаю с Джексоном, чтобы прочитать XML-файл из онлайн-местоположения, сопоставить его с объектом, а затем вставить этот объект в MongoDB с помощью Object Mapper.
На данный момент мой набор данных выглядит примерно так:
<sensors>
<sensor id="000" name="Sensor Name" refreshRate="2000">
<location latitude="12.3456" longitude="-67.890"/>
</sensor>
<sensor id="000" name="Sensor Name" refreshRate="2000">
<location latitude="12.3456" longitude="-67.890"/>
</sensor>
</sensors>
Если я сделаю следующее:
Записи списка = xmlMapper.readValue(conn.getInputStream(), List.class);
Я получаю список LinkedHashMap, который содержит элементы. Однако я бы предпочел, чтобы я мог просто сопоставить это с моим классом датчиков, который я уже создал.
Этот класс датчика я использую при взаимодействии с Mongo, и он выглядит примерно так:
@Document(collection = "Sensor")
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName="sensors")
public class Sensor {
@Id
private int id;
String name = "";
long refreshRate = "";
Location location;
...
}
Я пробовал приведение или сопоставление с датчиком; однако это не работает. Какого шага не хватает? Вся документация и учебные пособия, которые я читал, похоже, обрабатывают только простые экземпляры одной записи.