使用PHP XMLReader对XML树中的所有属性进行排序

时间:2010-01-25 02:38:05

标签: php xml

我有一些PHP代码可以将XML文件转换为CSV文件。在测试过程中,我没有创建CSV文件,只是以CSV格式回显结果。

每当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++;
    }
}

&GT;

2 个答案:

答案 0 :(得分:4)

$ xml-&gt; name返回节点的限定名称。因为属性是具有XMLReader :: ATTRIBUTE类型的节点,所以$ xml-&gt; 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++;
    }
}
?>

答案 1 :(得分:1)