0

閉じるノードの前に XML ツリーを追加する必要がありますが、解決策が見つからないようです。下の赤いブロックのサンプルは、</quiz>ノードの上に移動するだけです。

ここに画像の説明を入力

これは PHP で作成した XML コードで、上記の赤いブロックの XML セクションを作成します。

$xml = simplexml_load_file('quiz.xml');


$questionLoad = $xml->addChild('question');
$textQue = $questionLoad->addChild('text', $que);
$optionNode = $questionLoad->addChild('option');
$ans1 = $optionNode->addChild('text', $answer1);
$score = $optionNode->addChild('score', $score1);
$explain = $optionNode->addChild('explanation');
$expl1 = $explain->addChild('text', $explanation1);

$xml->asXML('quiz.xml');
4

2 に答える 2

0

quiz.xmlの内容を持つ特定の入力に対して

<?xml version="1.0"?>
<quizzes>
    <quiz>
        <question>
            <text>Choose the correct word for hot + est</text>
            <option>
                <text>hottest</text>
                <score>5</score>
                <explanation>
                    <text>Correct!</text>
                </explanation>
            </option>
            <option>
                <text>hotestt</text>
                <score>0</score>
                <explanation>
                    <text>Incorrect!</text>
                </explanation>
            </option>
            <option>
                <text>hotest</text>
                <score>0</score>
                <explanation>
                    <text>Incorrect!</text>
                </explanation>
            </option>
        </question>
    </quiz>
</quizzes>

あなたのコードから適応された次のPHP

<?php

$que = 'fsa';
$answer1 = 'cs';
$score1 = 5;
$explanation1 = 'hgfhfg';

$xml = simplexml_load_file('quiz.xml');

$questionLoad = $xml->children()[0]->addChild('question');
$textQue = $questionLoad->addChild('text', $que);
$optionNode = $questionLoad->addChild('option');
$ans1 = $optionNode->addChild('text', $answer1);
$score = $optionNode->addChild('score', $score1);
$explain = $optionNode->addChild('explanation');
$expl1 = $explain->addChild('text', $explanation1);

$xml->asXML('quiz.xml');

の望ましい結果quiz.xmlを生成します

<?xml version="1.0"?>
<quizzes>
    <quiz>
        <question>
            <text>Choose the correct word for hot + est</text>
            <option>
                <text>hottest</text>
                <score>5</score>
                <explanation>
                    <text>Correct!</text>
                </explanation>
            </option>
            <option>
                <text>hotestt</text>
                <score>0</score>
                <explanation>
                    <text>Incorrect!</text>
                </explanation>
            </option>
            <option>
                <text>hotest</text>
                <score>0</score>
                <explanation>
                    <text>Incorrect!</text>
                </explanation>
            </option>
        </question>
    <question><text>fsa</text><option><text>cs</text><score>5</score><explanation><text>hgfhfg</text></explanation></option></question></quiz>
</quizzes>
于 2013-10-10T07:48:35.170 に答える
0

上記のコードでは、xml をロードし、単純にノードを追加しています。ノードは常にファイルの最後に追加されます。

ex の add の代わりに append を使用してみてください:

$doc = new DOMDocument();
$doc->loadXML("<root/>");
$f = $doc->createDocumentFragment();
$f->appendXML("<foo>text</foo><bar>text2</bar>");
$doc->documentElement->appendChild($f);
echo $doc->saveXML();

参考まで。

于 2013-10-10T07:27:01.803 に答える