请检查我的代码。
questions.php
<?php
include("db.php");
$dom = new DOMDocument("1.0");
$node = $dom->createElement("questions");
$parnode = $dom->appendChild($node);
$week = date("W");
$query = "SELECT * FROM ".QUIZ_QUESTION." WHERE week='".$week."'";
$result = mysql_query($query);
header("Content-type: application/xml; charset=ISO-8859-1");
while ($row = mysql_fetch_assoc($result)){
$node = $dom->createElement("question");
$question = $parnode->appendChild($node);
$ansAtrribute = $question->setAttribute("id",$row['id']);
$que = $dom->createElement("que",$row['question']);
$quenode = $question->appendChild($que);
$qryOpt = mysql_query("SELECT * FROM ".QUIZ_OPTION." WHERE question_id='".$row['id']."'");
while($gerOptions = mysql_fetch_array($qryOpt)){
$ans = $dom->createElement("ans",$gerOptions['option']);
$ansNode = $question->appendChild($ans);
$ansAtrribute = $ansNode->setAttribute("ans",$gerOptions['is_correct']);
}
}
echo $dom->saveXML();
?>
我直接运行questions.php
这里是XML输出:
输出:
-<questions>
-<question id="1">
<que>What is PHP?</que>
<ans ans="0">Fruit</ans>
<ans ans="1">Language</ans>
<ans ans="0">Game</ans>
</question>
</questions>
quiz.php
<?php
$xmlDoc = new DOMDocument("1.0");
$xmlDoc->load("questions.php");
$questions = $xmlDoc->getElementsByTagName("question");
$question= $questions->item($qnum)->getElementsByTagName("que")->item(0)->nodeValue;
$ans1= $questions->item($qnum)->getElementsByTagName("ans")->item(0)->nodeValue;
$ans1r= $questions->item($qnum)->getElementsByTagName("ans")->item(0)->getAttribute('ans');
$ans2= $questions->item($qnum)->getElementsByTagName("ans")->item(1)->nodeValue;
$ans2r= $questions->item($qnum)->getElementsByTagName("ans")->item(1)->getAttribute('ans');
$ans3= $questions->item($qnum)->getElementsByTagName("ans")->item(2)->nodeValue;
$ans3r= $questions->item($qnum)->getElementsByTagName("ans")->item(2)->getAttribute('ans');
?>
我正在运行quiz.php
,但questions.php
未加载。
我收到以下错误:
警告:DOMDocument :: load()[domdocument.load]:期望开始标记,'&lt;'在文件中找不到:/// G:/xampp/htdocs/txtweb/quiz/questions.php,第3行的G:\ xampp \ htdocs \ txtweb \ quiz \ quiz.php中的第30行
致命错误:在第6行的G:\ xampp \ htdocs \ txtweb \ quiz \ quiz.php中的非对象上调用成员函数getElementsByTagName()
我发布了我的完整代码。请告诉我代码的错误在哪里?
答案 0 :(得分:4)
执行
$xmlDoc->load("questions.php");
你自己加载PHP源文件,而不是渲染输出。您的Web服务器负责解释和执行PHP文件,然后计算结果(在这种情况下将是生成的XML文件)。
要获取XML文件,您必须使用HTTP请求,例如
$xmlDoc->load("http://YOURURL/questions.php");
应该有效。当然,您必须将YOURURL
替换为您的实际URL和脚本路径。
答案 1 :(得分:0)
在php文件的顶部使用libxml_use_internal_errors(TRUE);
,即像这样的quiz.php
<?php
libxml_use_internal_errors(TRUE);
$xmlDoc = new DOMDocument();
$xmlDoc->load("questions.php");
这会删除不必要的内部警告。
并使用此更新您的xml文件 -
<rdf:RDF>
-<questions>
-<question id="1">
<que>What is PHP?</que>
<ans ans="0">Fruit</ans>
<ans ans="1">Language</ans>
<ans ans="0">Game</ans>
</question>
</questions>
</rdf:RDF>