有人可以帮我解决如何在PHP中输出以下XML文件
XML:
<student>
<name>studentname</name>
<map>
<competency>
<level>5</level>
<skill name="Maths">
<skillinfo> "some value" </skillinfo>
</skill>
<competency>
<competency>
<level>4</level>
<skill name="Science">
<skillinfo> "some value" </skillinfo>
</skill>
<competency>
<competency>
<level>5</level>
<skill name="Technology">
<skillinfo> "some value" </skillinfo>
</skill>
<competency>
</map>
</student>
Code I've so far:
$dom = new DOMDocument;
$dom->loadXML($data);
$xpath = new DomXpath($dom);
$x = $dom->documentElement;
echo "<table class='blueTable' >
<thead>
<tr>
<th>Student Name</th>
<th>Skill</th>
<th>Level</th>
</tr>
</thead>
<tbody>
<tr> ";
foreach ($xpath->query('//skill') as $item) {
foreach($item->parentNode->childNodes as $node)
if ($node->tagName == 'level')
echo "<td>" . $node->nodeValue . "</td>";
}
以上代码输出该学生的XML文件中找到的所有级别。每个学生都有自己的XML文件,但您不必担心这种复杂性。让我们先了解如何输出一个学生,他们的技能和水平。
我使用的是XDOM,我想做的是:
在表格中,我首先列出学生姓名,技能名称(数学)和等级信息。这需要重复,因为每个学生都有多种技能和水平。
我可以找出如何通过XPATH找到一些东西,然后找到它的父级,但似乎无法弄清楚如何正确循环。请帮助:)
谢谢
答案 0 :(得分:1)
这是使用SimpleXMLElement获取您的值的示例。元素是或类型SimpleXMLElement,您可以使用(string)
来获取值。您可以使用它来创建表格。
$studentName = (string)$elm->name;
echo $studentName . "<br>";
foreach ($elm->map->competency as $comp) {
$level = (string)$comp->level;
$name = (string)$comp->skill->attributes()->name;
$skillinfo = (string)$comp->skill->skillinfo;
echo sprintf(
"level: $level: %s<br> name: %s<br> skillinfo: %s",
$level, $name, $skillinfo
);
}