I am trying to write code that takes input from user and writes it in an XML file using XMLOutputFactory method. For that i had to open the file in append mode, but the problem here is that what i write the .xml file, the new information comes outside the closing config tag. This is bit mind boggling here as i have tried to spot the error but no luck. Help would be appreciated!
java code:
@Override
public boolean insertBook(String title,String description,String authors,String isbn)
{
// create an XMLOutputFactory
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// create XMLEventWriter
XMLEventWriter eventWriter = null;
try
{
eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(fileName , true));
// create an EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// create config open tag
StartElement configStartElement = eventFactory.createStartElement("","", Book);
eventWriter.add(configStartElement);
eventWriter.add(end);
// Write the different nodes
createNode(eventWriter, Title, title);
createNode(eventWriter, Description, description);
createNode(eventWriter, Authors, authors);
createNode(eventWriter, Isbn, isbn);
eventWriter.add(eventFactory.createEndElement("", "", "config"));
eventWriter.add(end);
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
catch (XMLStreamException ex)
{
Logger.getLogger(BookDAO.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
catch (FileNotFoundException ex)
{
Logger.getLogger(BookDAO.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
return true;
}
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);
}
And this is how it is entering in the XML File.
No comments:
Post a Comment