Проблема синтаксического анализа xml с использованием сервлета - PullRequest
1 голос
/ 09 июля 2010

Мы выбираем данные из базы данных MySQL с помощью сервлета. Мы хотим получить эти данные в формате XML.

Мы уже успешно получили html-страницу, но проблема в том, что мы получаем значения всех столбцов, но только из первой строки таблицы.

Как извлечь все строки из таблицы?

Вот наш текущий код:

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();
}

1 Ответ

3 голосов
/ 09 июля 2010

Вы пишете файл каждый раз, когда выполняете цикл. Вам нужно переместить некоторые вещи, чтобы выйти за пределы вашего цикла:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...