I'm recently working on a Weather Application that I want to save every customer search in an .xml formatted file. . . See GUI Design Here . .
I'm using the following code on Java to write the needed elements on the .xml file but the issue is that I cannot append the next search and save a new search as shown below :
<search>...NEW ELEMENTS (NEW SEARCH)...</seach>
when i click the "ForeCast" Button.
WeatherParser.java :
public void writeOnXML(String date, String[] term, String found, String geoNameID){
try {
XMLOutputFactory xMLOutputFactory = XMLOutputFactory.newFactory();
XMLStreamWriter xMLStreamWriter;
xMLStreamWriter = xMLOutputFactory
.createXMLStreamWriter(new FileOutputStream
("src\\main\\java\\stax\\weatherSearches.xml"));
//Create <weatherSearches></weatherSearches> (in weatherSearches.xml)
xMLStreamWriter.writeStartElement("weathersearches");
//Create <search></search> (weatherSearches.xml)
xMLStreamWriter.writeStartElement("search");
xMLStreamWriter.writeAttribute("date", date);
//Create <search><term>...</term></search> (weatherSearches.xml)
xMLStreamWriter.writeStartElement("term");
xMLStreamWriter.writeStartElement("temperature");
xMLStreamWriter.writeCharacters(term[0]);
xMLStreamWriter.writeEndElement(); //Close <Temperature>
xMLStreamWriter.writeStartElement("windDirection");
xMLStreamWriter.writeCharacters(term[1]);
xMLStreamWriter.writeEndElement(); //Close <WindDirection>
xMLStreamWriter.writeStartElement("windSpeed");
xMLStreamWriter.writeCharacters(term[2]);
xMLStreamWriter.writeEndElement(); //Close <WindSpeed>
xMLStreamWriter.writeStartElement("humidity");
xMLStreamWriter.writeCharacters(term[3]);
xMLStreamWriter.writeEndElement(); //Close <Humidity>
xMLStreamWriter.writeStartElement("pressure");
xMLStreamWriter.writeCharacters(term[4]);
xMLStreamWriter.writeEndElement(); //Close <Pressure>
xMLStreamWriter.writeStartElement("visibility");
xMLStreamWriter.writeCharacters(term[5]);
xMLStreamWriter.writeEndElement(); //Close <Visibility>
xMLStreamWriter.writeEndElement(); //close <term>
//Create <search><found></found></search> (weatherSearches.xml)
xMLStreamWriter.writeStartElement("found");
xMLStreamWriter.writeCharacters(found);
xMLStreamWriter.writeEndElement(); //Close <found>
//Create <search><geoNameID></geoNameID></search> (weatherSearches.xml)
xMLStreamWriter.writeStartElement("geoNameID");
xMLStreamWriter.writeCharacters(geoNameID);
xMLStreamWriter.writeEndElement(); //Close <geoNameID>
//Create <search></search> (weatherSearches.xml)
xMLStreamWriter.writeEndElement(); //Close <search>
xMLStreamWriter.writeEndElement(); //Close <weathersearches>
//xMLStreamWriter.flush();;
xMLStreamWriter.close();
}
catch (FileNotFoundException ex) {
loadErrorException(ex);
}
catch (XMLStreamException ex) {
loadErrorException(ex);
}
}
weatherSearches.xml :
<weathersearches>
<search date="Saturday - 14:00">
<term>
<temperature>11�C (52�F)</temperature>
<windDirection>Southerly</windDirection>
<windSpeed>18mph</windSpeed>
<humidity>97%</humidity>
<pressure>988mb</pressure>
<visibility>Poor</visibility>
</term>
<found>true</found>
<geoNameID>2656397</geoNameID>
</search>
</weathersearches>
Also will the unknown symbol in the element <weathersearches><search><term><temperature>
will cause me any errors or should I remove it from there?