0

我正在尝试将 MySQL 数据库转换为 xml 文件;这是我的代码:

  <?php

  header("Content-type: text/xml");

    include 'dbc.php';

      $query = "SELECT * FROM airports LIMIT 50";
      $result = mysql_query($query, $link)
      or die('Error querying database.');

  $xml = new SimpleXMLElement('<xml/>');

  while($row = mysql_fetch_assoc($result)) {
   $draw = $xml->addChild('draw');
   $draw->addChild('ident',htmlentities(iconv("UTF-8", "ISO-8859-1//IGNORE",$row['ident'])));
   $draw->addChild('name',htmlentities(iconv("UTF-8", "ISO-8859-1//IGNORE",$row['name'])));
  }

  mysql_close($link);
  $fp = fopen("links2.xml","wb");
  fwrite($fp,$xml->asXML());
  fclose($fp);

这是我得到的错误:

  XML Parsing Error: no element found
  Location: /sql2xml2.php
  Line Number 1, Column 2: 
  -^

我究竟做错了什么???

4

3 回答 3

1

由于抛出的警告,您的 XML 在您的 XML 阅读器中被视为无效,因此存在XML Parsing Error: junk after document element问题。

至于警告本身,您需要转义特殊实体(即&,在您<>内容中添加它时(使用str_replace通常仅适用于 XML 的那些 3,htmlentities可能会产生不希望的效果,除非您提供 PHP 5.4' sENT_XML1模式)。

有关发生这种情况的更多信息,请参阅相关答案

于 2012-12-09T06:26:24.663 回答
1

如果您只想将 MySQL 数据库导出到本地 XML 文件,您可以使用 mysqldump 工具:

mysqldump --xml -u username -p databasename [tablename] > filename.xml
于 2014-10-25T20:17:31.820 回答
0

让它与这段代码一起工作:

 <?
 header("content-type:text/xml");
 function getXML($query="SELECT * FROM airports limit 50")
 {
    include 'dbc.php';

     $result = mysql_query($query, $link)
     or die('Error querying database.');

 $columns="";
 echo "<xml>\n";
 while($row=mysql_fetch_assoc($result))
 {
    $columns.="\t<airport>\n";
    foreach($row as $key => $value)
        {
        $value = htmlentities(iconv("UTF-8", "ISO-8859-1//TRANSLIT",$value));
        $value = htmlentities(iconv("UTF-8", "ISO-8859-1//IGNORE",$value));
        $columns.="\t\t<$key>$value</$key>\n";
    }
$columns.="\t</airport>\n";
 }
 echo $columns;
 echo "</xml>\n";
 }

 getXML();

 ?>
于 2012-12-09T09:38:45.627 回答