XML解析错误:文档元素之后的垃圾

时间:2014-03-19 15:47:07

标签: php xml

我想从数据库创建一个xml文件,然后回显此文件以在另一个页面中用于某些ajax。

这是我用来创建xml文件的代码:

<?php

    header("Content-Type:text/XML");

    $connexion = new PDO("mysql:host=localhost;dbname=produits;charset=utf8", 'root', 'toor'); 
    $statement = $connexion->prepare("SELECT * FROM produit"); 
    $statement->execute();

    $resultats = $statement->fetchAll(PDO::FETCH_OBJ);

    $xml_file = new DOMDocument('1.0');

    $root = $xml_file->createElement('produits');


    foreach($resultats as $produit){

        $tel = $xml_file->createElement('telephone');
        $tel->setAttribute('id', $produit->id);

        $marque = $xml_file->createElement('marque');
        $marqueText = $xml_file->createTextNode($produit->marque);
        $marque->appendChild($marqueText);
        $tel->appendChild($marque);

        $model = $xml_file->createElement('model');
        $modelText = $xml_file->createTextNode($produit->model);
        $model->appendChild($modelText);
        $tel->appendChild($model);

        $prix = $xml_file->createElement('prix');
        $prix->setAttribute("devise", "DH");
        $prixText = $xml_file->createTextNode($produit->prix);
        $prix->appendChild($prixText);
        $tel->appendChild($prix);

        $root->appendChild($tel);
    }

    $xml_file->appendChild($root);

    echo $xml_file;
?>

问题是当我打开页面检查xml文件是否创建时,我收到此错误消息:

  

XML解析错误:文档元素之后的垃圾位置:   http://localhost/Ajax/produits/details.php第2行,列   1:^

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

$ xml_file指向DOMDocument实例。 DOMDocument没有实现隐式__toString()转换,因此echo $xml_file;会产生类似

的输出
Catchable fatal error: Object of class DOMDocument could not be converted to string in ...

并且客户端xml解析器抱怨它不是有效的xml doc。

你想输出你可以做的dom的xml表示,例如通过

echo $xml_file->saveXML();

请参阅http://docs.php.net/domdocument.savexml