【问题标题】:Get Child Data from large XML file从大型 XML 文件中获取子数据
【发布时间】:2013-08-07 18:29:12
【问题描述】:

我正在处理一个大型 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();
    }
}

我进行了足够多的研究,知道我需要使用流式阅读器来提高效率,但不确定如何获取数据的最后一部分。

【问题讨论】:

    标签: php xml xmlreader


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我删除了 $xml-&gt;next(); 并添加了 $xml-&gt;getAttribute('corporationID'); 并且工作得很好。
    猜你喜欢
    • 2012-03-06
    • 2012-12-24
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多