PHP:输出xml内容

时间:2018-06-04 07:15:13

标签: php xml

有人可以帮我解决如何在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找到一些东西,然后找到它的父级,但似乎无法弄清楚如何正确循环。请帮助:)

谢谢

1 个答案:

答案 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
    );
}

Demo