【问题标题】:PHP - Missing tags when exporting database as XML with XMLWriterPHP - 使用 XMLWriter 将数据库导出为 XML 时缺少标签
【发布时间】:2014-08-30 15:09:10
【问题描述】:

我正在使用 XMLWriter 尝试导出一个当前包含大约 6700 行的数据库。

据我所知,这样做应该比较简单,但是在打印XML的过程中,它不会关闭一个元素,因此会产生错误。

$xml = new XMLWriter();

$xml->openURI("php://output");
$xml->startDocument('1.0', 'UTF-8');
$xml->setIndent(true);

$xml->startElement('doc');

while ($row = mysql_fetch_assoc($getResult)) {
  $xml->startElement("item");

  $xml->startElement("id");
    $xml->writeRaw($row['id']);
  $xml->endElement();

  $xml->startElement("type");
    $xml->writeRaw($row['type']);
  $xml->endElement();

  $xml->startElement("name");
    $xml->writeRaw($row['name']);
  $xml->endElement();

  $xml->endElement();
}

$xml->endElement();

$xml->flush();

在此过程中的某个时刻,我会在 XML 输出中看到类似的内容:

<type>exampleTypetype>

然后它将继续打印 XML。

我对 PHP 还是比较陌生,所以如果能深入了解这里可能发生的事情,我将不胜感激。

谢谢

【问题讨论】:

    标签: php mysql xml xmlwriter


    【解决方案1】:

    您正在使用XMLWriter::writeRaw(),在这样做时,您需要自行处理正确的 XML 编码,因为它会按原样写入字节。

    正如您的错误描述所示,您没有碰巧首先将这些原始字节正确编码为有效的 XML。

    正如它进一步表明的那样,您并没有意识到这一点。很可能是因为您希望 XMLWriter 扩展已经为您编码数据。

    那么您可能正在寻找XMLWriter::text(),或者如果您需要将二进制数据编码到XML 中,请寻找base64_encode()

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多