如果这是重复的道歉,我看到其他类似的问题,但我不能让我的工作。
我有这个XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<quizzes>
<quiz>
<title>Arithmetic quiz</title>
<description>
<text>Seeing how mathematical quiz works</text>
</description>
<grading>
<range start="0" end="49">
<grade>F</grade>
<rank/>
</range>
<range start="50" end="60">
<grade>D</grade>
<rank/>
</range>
<range start="60" end="69">
<grade>C</grade>
<rank/>
</range>
<range start="70" end="79">
<grade>B</grade>
<rank/>
</range>
<range start="80" end="100">
<grade>A</grade>
<rank/>
</range>
</grading>
<question type="">
<text>Select the correct value for the common difference:2,6,10,14,18,22</text>
<option>
<text>26</text>
<score>5</score>
<explanation>
<text>Correct!</text>
</explanation>
</option>
<option>
<text>18</text>
<score>0</score>
<explanation>
<text>Incorrect!</text>
</explanation>
</option>
<option>
<text>10</text>
<score>0</score>
<explanation>
<text>Incorrect!</text>
</explanation>
</option>
</question>
</quiz>
</quizzes>
我能够循环并获得'得分'元素,但除了'小测验'之外我没有得到任何其他信息。
我的代码如下所示:
$xml=simplexml_load_file("maths.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}
有人能指出我正确的方向吗?我认为我没有足够深入地遍历XML树,但我不知道如何实现这一点。
答案 0 :(得分:0)
您可以使用xpath()
:
$xml=simplexml_load_file('math.xml');
var_dump($xml->xpath('//score'));
//score
将选择所有<score>
元素,无论它们在xml树中的位置如何。我已经为您撰写了一篇关于简单xml的初学者文章:link
另一种方法是使用DOMDocument
:
$doc = new DOMDocument();
$doc->load('math.xml');
foreach($doc->getElementsByTagName('score') as $element) {
echo $element->nodeValue;
}
教程:link