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問題が発生します。

警告自体については、特別なエンティティをエスケープする必要があります (つまり、&コンテンツ内でそのように追加する場合) (使用すると、通常、XML に関してはこれら 3 に対してのみうまく機能し、PHP 5.4 を指定しない限り、望ましくない効果が生じる可能性があります。モード)。<>str_replacehtmlentitiesENT_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 に答える