从大型XML文件中获取子数据

时间:2013-08-06 16:20:26

标签: php xml xmlreader

我有一个大型的XML文件(26,434行),我正在使用它。

摘录XML:

<row name="Scorned Syndicate" shortName="-SS-" allianceID="1778325832" executorCorpID="98020631" memberCount="29" startDate="2010-08-14 00:29:00">
    <rowset name="memberCorporations" key="corporationID" columns="corporationID,startDate">
        <row corporationID="98020119" startDate="2011-02-09 04:52:00" />
        <row corporationID="98020631" startDate="2011-02-23 23:55:00" />
    </rowset>
</row>

通过在这里搜索,我发现我如何获得联盟名称和短名称,但现在我想要公司ID

$xml = new XMLReader();
$xml->XML( $xmlString );

while( $xml->read() ) {
  if( 'row' === $xml->name ) {
        echo $xml->getAttribute('name') . ' '. $xml->getAttribute('shortName').'<br>';

        $xml->next();
    }
}

我研究得足以知道我需要利用流媒体阅读器提高效率,但不知道如何获取数据的最后部分。

1 个答案:

答案 0 :(得分:1)

当您在XMLReader中使用next()函数时,将跳过子树。你的while语句应该自动推进。如果您需要在解析整个文件之前查看输出,可以考虑使用ob_flush,否则最好创建一个数组,以便格式更加可定制。