0

データベース レコードに基づいて xml ドキュメントを作成したいのですが、これらの行をコーディングしましたが、親ノードを配置する方法がわかりません。

$dom = new DOMDocument("1.0");
//header("Content-Type: text/plain");

while ($row = mysql_fetch_row($dtrs)) {
    //create sub toping..

    $root = $dom->createElement("case");
    $dom->appendChild($root);

    // create child element
    $caseno = $dom->createElement("caseno");
    $root->appendChild($caseno);

    // create text node
    $caseno_text = $dom->createTextNode($row[0]);
    $caseno->appendChild($caseno_text);


    // create child element
    $petname = $dom->createElement("petname");
    $root->appendChild($petname);

    // create text node
    $pet_text = $dom->createTextNode($row[1]);
    $petname->appendChild($pet_text);

    // create child element
    $resname = $dom->createElement("resname");
    $root->appendChild($resname);

    // create text node
    $res_text = $dom->createTextNode($row[2]);
    $resname->appendChild($res_text);

    // create child element
    $hearing = $dom->createElement("hearing");
    $root->appendChild($hearing);

    // create text node
    $hear_text = $dom->createTextNode($row[3]);
    $hearing->appendChild($hear_text);


    // create child element
    $status = $dom->createElement("status");
    $root->appendChild($status);

    // create text node
    $status_text = $dom->createTextNode($row[4]);
    $status->appendChild($status_text);
}

ノードを入れることができないこのような結果が得られます

<?xml version="1.0"?> <case> <caseno>010301</caseno> <petname>ashiq</petname> <resname>state</resname> <hearing>8012-08-02</hearing> <status>P</status> </case> <caseno>010302</caseno> <petname>hussain</petname> <resname>state</resname> <hearing>8012-08-02</hearing> <status>P</status> </case>

実際には、このような結果が必要です。

<?xml version="1.0"?> <stage> <case> <caseno>010301</caseno> <petname>ashiq</petname> <resname>state</resname> <hearing>8012-08-02</hearing> <status>P</status> </case> <caseno>010302</caseno> <petname>hussain</petname> <resname>state</resname> <hearing>8012-08-02</hearing> <status>P</status> </case> </stage>

私を助けてください。

4

1 に答える 1

0

複数のルート要素を持つことはできません。caseループの外側に 1 つのルート要素を割り当て、それに要素を追加する必要があります。

<?xml version="1.0"?>
<cases>
    <case>
        <caseno>010301</caseno>
        <petname>ashiq</petname>
        <resname>state</resname>
        <hearing>8012-08-02</hearing>
        <status>P</status>
    </case>
    <case>
        <caseno>010302</caseno>
        <petname>hussain</petname>
        <resname>state</resname>
        <hearing>8012-08-02
        </hearing>
        <status>P</status>
    </case>
</cases>

また、余談として:

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2012-12-01T08:58:44.113 に答える