使用PHP DOMDocument从XML中获取标记值

时间:2014-05-22 16:50:11

标签: php xml domdocument

我有一个包含以下内容的XML文件:

<Klassen>
  <Klas>
     <Klas>HT1</Klas>
     <Omschrijving>Klas HT1</Omschrijving>
  </Klas>
  <Klas>
     <Klas>HT2</Klas>
     <Omschrijving>Klas HT2</Omschrijving>
  </Klas>
</Klassen>

我想从第二级Klas标记中获取值。我使用了以下PHP脚本,但它没有用;

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load($apiurl);
$hallo = $xmlDoc->getElementsByTagName('Klas');

foreach ($hallo as $book) {
   $result = $book->nodeValue;
   echo '<option value="'.$result.'">'.$result.'</option>';
}
?>

我无法更改标记名称,因为它不是我的API,而且API的创建者也不会更改它。如何将值(在本例中)HT1和HT2输入选择框?

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是使用DOMXpath的解决方案:

<?php
    $xml = <<<XML
<Klassen>
  <Klas>
     <Klas>HT1</Klas>
     <Omschrijving>Klas HT1</Omschrijving>
  </Klas>
  <Klas>
     <Klas>HT2</Klas>
     <Omschrijving>Klas HT2</Omschrijving>
  </Klas>
</Klassen>
XML;


    $xmlDoc = new DOMDocument();
    $xmlDoc->loadXML($xml);

    $xpath = new DOMXpath($xmlDoc);
    $hallo = $elements = $xpath->query("//Klas/Klas");

    foreach ($hallo as $book) {
        $result = $book->nodeValue;
        echo '<option value="'.$result.'">'.$result.'</option>';
    }

输出:

<option value="HT1">HT1</option><option value="HT2">HT2</option>

这里是online working example