gacek85 / xml-stream

此包最新版本(1.0.0)没有提供许可信息。

大XML文件的事件驱动读取器

1.0.0 2016-10-27 08:51 UTC

This package is not auto-updated.

Last update: 2024-09-18 20:42:10 UTC


README

Build Status

XML Stream

  • 处理大XML列表的简单库。

  • 逐块解析XML文件,而不是将整个文件加载到内存中,并派发事件来通知找到的给定类型的节点。

  • 主要组件是 Gacek85\XML\Stream 类,它封装了所有相关元素。

<?php

use Gacek85\XML\Chunk\Provider as ChunkProvider;
use Gacek85\XML\Node\Detector as NodeDetector;
use Gacek85\XML\Node\Event\Event as NodeEvent;
use Gacek85\XML\Node\Event\EventInterface;
use Gacek85\XML\Node\Event\Feature\DOMElementProvider;
use Gacek85\XML\Node\Event\Provider as EventProvider;
use Gacek85\XML\Stream;
use Symfony\Component\EventDispatcher\EventDispatcher;

$eventProvider = (new EventProvider())
                    ->addFeatureProvider(new DOMElementProvider());

$stream = new Stream(
            new EventDispatcher(),
            new ChunkProvider('/path/to/file.xml', 1024),	// 2nd param is chunk length
            new NodeDetector(),
            $eventProvider
);

$stream
		->getDispatcher()
        ->addListener(EventInterface::NAME, function (NodeEvent $ev) {
			// Do your stuff here
		});

$stream->read('listNodeName');