How to modify a huge XML file by StAX?

前端 未结 3 1412
南方客
南方客 2020-12-28 22:47

I have a huge XML (~2GB) and I need to add new Elements and modify the old ones. For example, I have:


    ....
    ...         


        
3条回答
  •  猫巷女王i
    2020-12-28 23:09

    Try this

        XMLInputFactory inFactory = XMLInputFactory.newInstance();
        XMLEventReader eventReader = inFactory.createXMLEventReader(new FileInputStream("1.xml"));
        XMLOutputFactory factory = XMLOutputFactory.newInstance();
        XMLEventWriter writer = factory.createXMLEventWriter(new FileWriter(file));
        XMLEventFactory eventFactory = XMLEventFactory.newInstance();
        while (eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();
            writer.add(event);
            if (event.getEventType() == XMLEvent.START_ELEMENT) {
                if (event.asStartElement().getName().toString().equalsIgnoreCase("book")) {
                    writer.add(eventFactory.createStartElement("", null, "index"));
                    writer.add(eventFactory.createEndElement("", null, "index"));
                }
            }
        }
        writer.close();
    

    Notes

    new FileWriter(file, true) is appending to the end of the file, you hardly really need it

    equalsIgnoreCase("book") is bad idea because XML is case-sensitive

提交回复
热议问题