Измените значение атрибута с помощью XMLEventReader и XMLEventWriter

#java #xml #parsing #stax

Вопрос:

Предполагая, что у меня есть код, аналогичный:

 XMLEventFactory eventFactory = XMLEventFactory.newInstance();
    
XMLEventReader reader =
    XMLInputFactory.newInstance().createXMLEventReader(
        new java.io.FileInputStream(args[0]));
XMLEventWriter writer =
    XMLOutputFactory.newInstance().createXMLEventWriter(
        System.out);

while(reader.hasNext()) {
    XMLEvent event = reader.nextEvent()
    if (event.isStartElement()) {
        StartElement startElement = event.asStartElement();
        if(startElement.getName().getLocalPart().equals("SomeNode")) {
            // Change value of attribute "Id" ...
        }
    }
    writer.add(event);
}
writer.flush();
 

(Также см.: https://docs.oracle.com/javaee/5/tutorial/doc/bnbfl.html#bnbgq)

Как можно изменить значение определенного атрибута из узла startElement События, сохраняя и не зная обо всех остальных?

Я знаю, что могу создать новое событие атрибута с помощью XMLEventFactory — однако я не уверен, как изменить event экземпляр или создать новый на его основе.