0

Laravelコントローラーに次のコードがあります:

public function toXMLSpreadsheet()
{
    $doc = new DOMDocument();
    $doc->load('xmlspreadsheet.xml');
    $table = $doc->getElementsByTagName('Table')->item(0);

    $applications = Application::all();
    foreach($applications as $application)
    {
        $f = $doc->createDocumentFragment();
        $f->appendXML("
            <Row>
                <Cell><Data ss:Type=\"Number\">{$application->id}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->nume}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->prenume}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->cnp}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->adresa}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->localitate}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->judet}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->telefon}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->email}</Data></Cell>
                <Cell><Data ss:Type=\"String\">{$application->nationalitate}</Data></Cell>
            </Row>
        ");
        $table->appendChild($f);
    }

    $doc->save('Inscrisi.xml');

}

および次の XML ファイル:

<?xml version="1.0" encoding="UTF-8"?>

<?mso-application progid="Excel.Sheet"?>

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:x="urn:schemas-microsoft-com:office:excel"
  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:html="http://www.w3.org/TR/REC-html40">

  <Worksheet ss:Name="Table1">
    <Table>
    </Table>
  </Worksheet>
</Workbook>

コントローラーで関数を実行すると、次のようなエラーが発生します。

production.ERROR: E:\www\practica\app\controllers\ApplicationsController.php:105 にメッセージ「DOMDocumentFragment::appendXML(): namespace error: Namespace prefix ss for Type on Data is not defined」の例外「ErrorException」

理由はありますか?名前空間ssは XML ファイルで定義されます。

ありがとうございました!

4

1 に答える 1

0

XML フラグメントで「ss」プレフィックスの名前空間を定義する必要があります。正しい名前空間を持つ xmlns:ss を一番上の要素 (行) に追加します。

于 2014-05-28T11:28:16.467 に答える