Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > как закачать из dbf в xml?


Автор: NXN 9.8.2006, 10:32
Есть данные которые выгружаются в dbf файл теперь мне их надо перевести в xml и уже потом работать с полями!

Автор: LSD 9.8.2006, 11:21
И в чем проблема?

Читаешь данные из БД, считал строку, сгенерировал XML (например SAXTransformerFactory) и так далее до конца таблицы.

Автор: NXN 10.8.2006, 06:00
а есть документация по этому?
и проблема в том что я не фига не знаю xml! smile 

Автор: LSD 10.8.2006, 11:32
А что там знать smile XML сам по себе очень прост: открыли тег, записали информацию, закрыли тег и т.д.

Для Java выгрузка данных в файл будет выглядеть так:
Код
  public static void printResultSet(ResultSet rs, TransformerHandler handler) throws SQLException, SAXException
  {
    ResultSetMetaData meta = rs.getMetaData();
    String[] columns = new String[meta.getColumnCount()];
    for(int i = 0; i < columns.length; i++)
      columns[i] = meta.getColumnName(i + 1);
    while(rs.next())
    {
      handler.startElement(null, null, "ROW", null);
      for(int i = 0; i < columns.length; i++)
      {
        handler.startElement(null, null, columns[i], null);
        String str = rs.getString(i + 1);
        if(str != null)
          handler.characters(str.toCharArray(), 0, str.length());
        handler.endElement(null, null, columns[i]);
      }
      handler.endElement(null, null, "ROW");
    }
  }

  public static void main(String[] args)
  {
    try
    {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@sb-srv:1521:ORCL", "scott", "tiger");
      PreparedStatement ps = conn.prepareStatement("select * from TABLE1");
      ResultSet rs = ps.executeQuery();
      String tableName = rs.getMetaData().getTableName(1);
      if(tableName == null || tableName.equals(""))
        tableName = "ROWSET";

      StreamResult out = new StreamResult(new File("C:\\TEMP\\data.xml"));
      SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
      TransformerHandler handler = tf.newTransformerHandler();
      Transformer serializer = handler.getTransformer();
      serializer.setOutputProperty(OutputKeys.INDENT, "yes");

      handler.setResult(out);
      handler.startDocument();

      handler.startElement("", "", tableName, null);
      printResultSet(rs, handler);
      handler.endElement("", "", tableName);
      handler.endDocument();

      rs.close();
      ps.close();
      conn.close();
    }
    catch(Exception ex)
    {
      ex.printStackTrace();
    }
  }

В результаете получим, что-то наподобие:
Код
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET>
  <ROW>
    <ID>EA4CB32BDBA6405EA44F801B665667F5</ID>
    <TEXT>Treat Wolf</TEXT>
  </ROW>
  <ROW>
    <ID>A6B8245E7D0C49D38A8FB18F42EB7ED0</ID>
    <TEXT>Beverley Pride</TEXT>
  </ROW>
  <ROW>
    <ID>2EDE1EFAD8754FE085D09A153C9EBBA9</ID>
    <TEXT>Oliver Ifans</TEXT>
  </ROW>
  <ROW>
    <ID>5B822E809664421F8A9A7BAFAD706C0E</ID>
    <TEXT>Denzel Kingsley</TEXT>
  </ROW>
  <ROW>
    <ID>29C75041A34440D7ADD8BFC50B0C100B</ID>
    <TEXT>Stevie Tucker</TEXT>
  </ROW>
  <ROW>
    <ID>6222581350644D048EEA61FFD4043AB6</ID>
    <TEXT>Patricia Short</TEXT>
  </ROW>
  <ROW>
    <ID>D15D516CCF964794A5332934E7E0A85A</ID>
    <TEXT>Shelby Mirren</TEXT>
  </ROW>
</ROWSET>

Автор: NXN 10.8.2006, 13:43
1. уже есть входной файл dbf который выгружает из rs (такая програмка)
2. надо из этого файла читать и записывать в другую форму, которая заполняется формами xml 
как это сделать пока не очень понимаю!!!!!!
МОЖЕТ КТО ПОМОЖЕТ!!!!

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