php: SimpleXML ile ayrıştırma tablo yapısı

1 Cevap php

Ben nedense şöyle bir tablo yapısında modellenmiştir bir xml dosyasında okumaya çalışıyorum:

<tr id="1">
  <td name="Date">10/01/2009</td>
  <td name="PromoName">Sample Promo Name</td>
  <td name="PromoCode">Sample Promo Code</td>
  <td name="PromoLevel" />
</tr>

Bu dosya birden <tr> blokları var ve hepsi <table> ile çevrilidir, sadece bir örnek sırasıdır.

Adlandırılmış olan çizgiler <td> ile tüm nasıl, değerlerle okuyabilir name?

1 Cevap

Bir XPath ifadesi ile SimpleXML kullanabilirsiniz.

$xml = simplexml_load_file('myFile.xml');
$values = $xml->xpath('//td[@name]');
foreach($values as $v) {
    echo "Found $v<br />";
}

Bu size bir isim özelliğine sahip tüm TD düğüm değerleri, örneğin verecek

Found 10/01/2009
Found Sample Promo Name
Found Sample Promo Code
Found <nothing cuz PromoLevel is empty>

Edit tüm Tablo satırlar aracılığıyla almak için, böyle bir şey yapabilirsiniz:

$rows = $xml->xpath('//tr');
foreach($rows as $row) {
   echo $row['id'];
   foreach($row->td as $td) {
      if($td['name']) {
          echo $td['name'],':',$td,'<br/>',PHP_EOL;
      }
   }
}

Ayrıca this article bakmak isteyebilirsiniz.

Josh önerdiği gibi Edit, XPath ifadesini düzeltildi.