Я использую Woodstox для передачи XML-документов в мое приложение. Мне нужно установить атрибуты по умолчанию для элементов, как они определены в схеме, прежде чем они будут обработаны, но единственный способ сделать это с помощью Woodstox - прочитать документ в памяти с помощью дополнительного XMLStreamReader с некоторой логикой для записи атрибутов по умолчанию, записать его в XML-документ в памяти, а затем передать документ в памяти в бизнес-логику.Java: установить атрибуты в XMLStreamReader2?
Мне это не нравится. Я хочу, чтобы поток документа на элемент, чтобы сохранить снимок памяти низкий, потому что документы могут быть потенциально большими, и я запускаю несколько экземпляров этого в приложении. Есть ли способ внедрить атрибуты в XMLStreamReader при потоковой передаче документа? Я уже нашел способ, чтобы пропустить через узлы я не заинтересован в то время как потоковый:
public class XMLPreProcessor extends StreamReader2Delegate {
public XMLPreProcessor(XMLStreamReader2 sr) {
super(sr);
}
//Skip over all processing instructions
//Can this be extended to inject attributes to elements?
@Override
public int next() throws XMLStreamException {
int eventType = super.next();
while(eventType == XMLStreamConstants.PROCESSING_INSTRUCTION) {
eventType = super.next();
}
return eventType;
}
}
Может ли этот делегату быть переделан, чтобы придать атрибуты минуты XMLStreamReader?
Я закончил перенос делегата с помощью XMLEventReader и переопределил метод 'nextEvent()', чтобы ввести атрибуты по умолчанию для элементов. Существует слишком много методов для переопределения в XMLStreamReader, в сочетании с тем, что он специфичен для реализации, слишком много работы для нишевой функции. Переопределение XMLEventReader проще, и будет легче переписать, если я изменю реализации. – user1428945