2012-04-04 4 views
0

Я создал таблицу MySQL и хотел бы сохранить содержимое таблицы в XML-файле для использования другими приложениями. Я могу получить доступ к данным и отобразить данные в окне браузера, но при сохранении с помощью DomDocument :: save ('thexmlfile.xml') я не вижу никаких новых файлов, созданных в папке каталога запущенного файла PHP.Использование PHP DOM для создания XML-файлов из данных MySQL

ответ

0

вам придется создать XML DOM из данных тузд, а затем сохранить его в XML-file.An Например:

$sql = 'select * from messages'; 
$run = mysql_query($sql, $link); 

if($run && mysql_num_rows($run)) { 
    $doc = new DOMDocument('1.0'); 
    $doc->formatOutput = true; 
    $doc->preserveWhiteSpace = true; 

    $root = $doc->createElement('data'); 
    $doc->appendChild($root); 

    while(($fetch = mysql_fetch_assoc($run))!== false) { 
     $node = $doc->createElement('node'); 
     $root->appendChild($node); 

     foreach($fetch as $key => $value) { 
      createNodes($key, $value, $doc, $node); 
     } 
    } 
    $doc->save("thexmlfile.xml"); 
} 

function createNodes($key, $value, $doc, $node) { 
    $key = $doc->createElement($key); 
    $node->appendChild($key); 
    $key->appendChild($doc->createTextNode($value)); 
} 

Теперь вы должны увидеть файл XML.

Надеюсь, это помогает.

+0

Спасибо @Pushpesh. проблема в том, что я сейчас получаю сообщение об ошибке "Ошибка анализа XML: ошибка синтаксиса Местонахождение: protocal: //localhost/practice/displayQueue.php Номер строки 1, столбец 1: данные не найдены." Это также показано, когда я комментирую строку $ doc-> save ("thexmlfile.xml") и добавляю echo doc-> saveXML(); ^ –

+0

ОК, у вас есть структура таблицы mysql, которую я привел в моем примере ... или если у вас есть отдельная структура, отправьте ее здесь ... я сделаю соответствующие изменения ... –

+0

Я создал таблицу, используя CREATE TABLE 'messages' ( ' id' INT (10) без знака NOT NULL AUTO_INCREMENT, 'senderNumber' VARCHAR (50) по умолчанию NULL, ' smsMessage' VARCHAR (1600) по умолчанию NULL, 'sentTime' метка NULL по умолчанию CURRENT_TIMESTAMP, ' receivedTime' datetime default NULL, 'operator' varchar (50) default NULL, ' messageType' varchar (50) default 'SMS: TEXT', ПЕРВИЧНЫЙ КЛЮЧ ('id') ) ENGINE = MyISAM; Теперь при отображении я просто хочу отобразить 3 поля senderNumber, smsMessage и timeReceived. –

0

Хм, ваш вопрос о DOM, принятый ответ о DOM, но вы, кажется, не нуждаются в возможности этого, то брат Libxml в SimpleXML кажется гораздо более прямо вперед ... Я предполагаю, что ваша проблема давно но только для полноты:

$sql = 'select * from messages'; 
$run = mysql_query($sql, $link); 

if($run && mysql_num_rows($run)) { 
    $xml = new SimpleXMLElement('<data/>'); 
    while($fetch = mysql_fetch_assoc($run)) { 
     $node = $root->addChild('node'); 
     foreach($fetch as $key => $value) { 
      $node->addChild($key,$value); 
     } 
    } 
    $xml->asXML("thexmlfile.xml"); 
} 
Смежные вопросы