2010-01-25 25 views
4

我有一些PHP代碼可將XML文件轉換爲CSV文件。在測試期間,我不創建CSV文件,只是以CSV格式回顯結果。使用PHP XMLReader對XML樹中的所有屬性進行排序

每當XMLReader的到達一個空元素,它輸出元件的所有屬性。

1)有沒有一種方法來輸出它的屬性名稱的值,即(有一個$ XML->的AttributeName,與$ XML的推移>值)?

2)有沒有一種方法排序在整個樹中的所有屬性,而不僅僅是那些在空元素?

<?php 

ini_set('memory_limit','50M'); 

$x = file_get_contents('H8_data.xml'); 

$xml = new XMLReader(); 
$xml->open('H8_data.xml', null, 1<<19); 

$num = 1; 
while ($xml->read() && $num <= 2000) { 
    if($xml->isEmptyElement) { 
     if($xml->hasAttributes) { 
      while($xml->moveToNextAttribute()) { 
       echo $xml->value, ', '; 
      } 
     } 
    echo '<br />'; 
    $num++; 
    } 
} 

?>

+0

語法錯誤:echo $ xml-> value,',';應該是echo $ xml-> value。 ','; ? – 2010-01-25 02:44:41

+0

實際上都可以接受。如果我創建一個變量,我將不得不使用後者,但echo支持逗號。 – Brian 2010-01-25 02:46:36

+0

這不是一個語法錯誤,echo可以接受用逗號分隔的任意數量的參數。 – 2010-01-25 02:48:10

回答

3

$ XML->名稱返回節點的限定名。由於屬性是用的XMLReader ::屬性類型節點,$ XML->名稱會在這種情況下返回當前屬性的名稱。 下面是代碼版本,其輸出既屬性名和值。

<?php 

ini_set('memory_limit','50M'); 

$x = file_get_contents('H8_data.xml'); 

$xml = new XMLReader(); 
$xml->open('H8_data.xml', null, 1<<19); 

$num = 1; 
while ($xml->read() && $num <= 2000) { 
    if($xml->isEmptyElement) { 
     if($xml->hasAttributes) { 
      while($xml->moveToNextAttribute()) { 
       echo $xml->name, ' = ', $xml->value, ', '; 
      } 
     } 
    echo '<br />'; 
    $num++; 
    } 
} 
?> 
相關問題