Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Stax


Автор: rith2 5.8.2008, 19:02
привет!
Код


package MFrame;

import java.io.FileOutputStream;

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartDocument;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

public class CreateXML {
    private String configFile;

    public void setFile(String configFile) {
    this.configFile = configFile;
    }

    public void saveConfig() throws Exception {
    // Create a XMLOutputFactory
    XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
    // Create XMLEventWriter
    XMLEventWriter eventWriter = outputFactory
        .createXMLEventWriter(new FileOutputStream(configFile));
    // Create a EventFactory
    XMLEventFactory eventFactory = XMLEventFactory.newInstance();
    XMLEvent end = eventFactory.createDTD("\n");
    // Create and write Start Tag
    StartDocument startDocument = eventFactory.createStartDocument();
    eventWriter.add(startDocument);

    // Create config open tag
    StartElement configStartElement = eventFactory.createStartElement("",
        "", "config");
    eventWriter.add(configStartElement);
    eventWriter.add(end);
    // Write the different nodes
    createNode(eventWriter, "mode", "");
    createNode(eventWriter, "unit", "");
    createNode(eventWriter, "current", "");
    createNode(eventWriter, "interactive", "");

    eventWriter.add(eventFactory.createEndElement("", "", "config"));
    eventWriter.add(end);
    eventWriter.add(eventFactory.createEndDocument());
    eventWriter.close();
    }

    private void createNode(XMLEventWriter eventWriter, String name,
        String value) throws XMLStreamException {

    XMLEventFactory eventFactory = XMLEventFactory.newInstance();
    XMLEvent end = eventFactory.createDTD("\n");
    XMLEvent tab = eventFactory.createDTD("\t");
    // Create Start node
    StartElement sElement = eventFactory.createStartElement("", "", name);
    eventWriter.add(tab);
    eventWriter.add(sElement);
    // Create Content
    Characters characters = eventFactory.createCharacters(value);
    eventWriter.add(characters);
    // Create End node
    EndElement eElement = eventFactory.createEndElement("", "", name);
    eventWriter.add(eElement);
    eventWriter.add(end);

    }

    /**
     * @param args
     */
    public static void main() { //String[] args
    CreateXML configFile = new CreateXML();
    configFile.setFile("config2.xml");
    try {
        configFile.saveConfig();
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

}



Выдает ошибку:

Exception in thread "AWT-EventQueue-0" javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.XMLOutputFactoryBase not found

При выполнении команды:

XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

Честно искал на гугле, но ничего толкового не нашел. Помогите пжлста или тыкните носом, где решение поискать можно. 
Спасибо!

Автор: rith2 6.8.2008, 07:20
В общем чтото я протупил. Залез на http://stax.codehaus.org/ и скачал вообще все необходимые пакет, в том числе com.bea.xml. Просто непонятно почему в примере нет импорта com.bea.xml.stream.XMLOutputFactoryBase, раз ругается на его отсутствие...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)