1

We are fetching data from MySQL database using a servlet. We want retrive that data in XML format.

We already got an html page succesfully, but the problem now is we are getting the values of all columns but from the first row of table only.

How do we retrieve all the rows from the table?

Here's our current code:

while(rs.next())
{  
    Element root = doc.createElement("BSE");
    System.out.println(doc.appendChild(root));

    Element child = doc.createElement("Market_Watch");
    root.appendChild(child);

    Element child1 = doc.createElement("Stock_Code");
    child.appendChild(child1);

    Text text1 = doc.createTextNode(rs.getString("Stock_Code"));
    child1.appendChild(text1);

    Element child2 = doc.createElement("Stock_Name");
    child.appendChild(child2);

    Text text2 = doc.createTextNode(rs.getString("Stock_Name"));
    child2.appendChild(text2);

    Element child3 = doc.createElement("Open_Rate");
    child.appendChild(child3);

    Text text3 = doc.createTextNode(rs.getString("Open_Rate"));
    child3.appendChild(text3);

    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();

    transformer.setOutputProperty(OutputKeys.INDENT, "yes");

    StringWriter sw = new StringWriter();
    StreamResult result = new StreamResult(sw);
    DOMSource source = new DOMSource(doc);
    transformer.transform(source, result);
    String xmlString = sw.toString();

    File file = new File("c:/newxm94.xml");
    BufferedWriter bw = new BufferedWriter
                  (new OutputStreamWriter(new FileOutputStream(file)));
    bw.write(xmlString);
    bw.flush();
    bw.close();
}
2
  • You have a servlet and are writing to c:/newxm94.xml ? That does not seem correct. Did you copy paste the right snippet? Commented Jul 9, 2010 at 7:02
  • And aren't you just overwriting the file with every loop ? Shouldn't you open it before starting the loop and close afterwards, or open it for append. Commented Jul 9, 2010 at 7:09

1 Answer 1

3

You're writing the file every time you iterate through the loop. You need to move some stuff to be outside of your loop:

Element root = doc.createElement("BSE");
System.out.println(doc.appendChild(root));

while(rs.next())
{  
    Element child = doc.createElement("Market_Watch");
    root.appendChild(child);

    Element child1 = doc.createElement("Stock_Code");
    child.appendChild(child1);

    Text text1 = doc.createTextNode(rs.getString("Stock_Code"));
    child1.appendChild(text1);

    Element child2 = doc.createElement("Stock_Name");
    child.appendChild(child2);

    Text text2 = doc.createTextNode(rs.getString("Stock_Name"));
    child2.appendChild(text2);

    Element child3 = doc.createElement("Open_Rate");
    child.appendChild(child3);

    Text text3 = doc.createTextNode(rs.getString("Open_Rate"));
    child3.appendChild(text3);
}

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = sw.toString();

File file = new File("c:/newxm94.xml");
BufferedWriter bw = new BufferedWriter
              (new OutputStreamWriter(new FileOutputStream(file)));
bw.write(xmlString);
bw.flush();
bw.close();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.