0

抱歉,如果这是重复的,我看到其他类似的问题,但我无法让我的工作。

我有这个 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 树,但我不知道如何实现这一点。

4

1 回答 1

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;
}

教程:链接

于 2013-07-23T07:45:18.583 回答