2010-01-25 4 views
4

XML 파일을 CSV 파일로 변환하는 PHP 코드가 있습니다. 테스트 중에 CSV 파일을 만들지 않고 CSV 형식으로 결과를 표시합니다.PHP XMLReader를 사용하여 XML 트리의 모든 속성을 정렬합니다.

XMLReader가 빈 요소에 도달 할 때마다 요소의 모든 특성을 출력합니다.

1) 속성 이름을 값 (예 : $ xml-> AttributeName이 $ xml-> value)과 함께 출력하는 방법이 있습니까?

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 여야합니다. ','; ?? –

+0

실제로 모두 허용됩니다. 변수를 만들 때 후자를 사용해야하지만 에코는 쉼표를 지원합니다. – Brian

+0

이것은 구문 오류가 아니며 echo는 쉼표로 구분 된 인수를 허용합니다. –

답변

3

$ XML-는> 이름은 노드의 정규화 된 이름을 반환합니다. 속성은 XMLReader :: ATTRIBUTE 유형의 노드이므로 $ xml-> name은이 경우 현재 속성의 이름을 반환합니다. 아래 코드는 속성 이름과 값을 모두 출력합니다.

<?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++; 
    } 
} 
?> 
관련 문제