У меня есть некоторые данные (около 150-200 МБ), которые мне нужно преобразовать в XML-файл. Я ранее пытался сделать это на основе DOM, но память является большим ограничением.Написание огромных XML-файлов с помощью StAX
Я начал изучать реализацию StaX и имею несколько запросов.
Допустим, у меня есть следующий код.
XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter("output.xml"));
writer.writeStartDocument(" ");
writer.writeStartElement(" ");
writer.writeStartElement("");
// call method X a million times
writer.writeEndElement(" ");
writer.flush();
writer.close();
// method x
X() {
writer.writeStartElement(" ");
writer.writeEndElement();
}
Я предполагаю, что всякий раз, когда метод X выполняется, он записывает элемент в файл. Это не будет содержать преобразованный XML до сих пор в памяти. Я прав?
Закрывает ли эти закрытые теги автоматически, как первые 2 элемента запуска?
Могу ли я смывать писатель и снова использовать один и тот же писатель, чтобы добавить еще несколько XML в файл, например так:
X() { writer.writeStartElement(" "); writer.writeEndElement(); writer.flush(); }
Является ли структура XML очень сложной (множество узлов разных типов и глубокая иерархия)? – Rafa
Да. Данные динамические, и нам нужно создать XML на основе данных – Flash
Ok. Я думал, что это будет просто анализ данных. Таким образом, возможно, вы подумали бы об этом вручную, используя легкий StringBuffer. У меня нет ответа на # 1 или # 2, но у меня есть ощущение, что у вас будут проблемы. Вы считали JAXB? – Rafa