prewk/xml-streamer
最新稳定版本:0.5.0
Composer 安装命令:
composer require prewk/xml-streamer
包简介
Stream large XML files with low memory consumption.
README 文档
README
This project is discontinued, I recommend using its successor xml-string-streamer instead.
About
Written by oskar.thornblad@gmail.com.
Contributions from:
- Valiton GmbH
- Michael Härtl
Licensed under the MIT license.
Installation
Install with composer by adding the following to your composer.json file:
{
"require": {
"prewk/xml-streamer": "dev-master"
}
}
Then, run composer install (assuming you have composer installed.)
Usage
Extend the class and implement the processNode() method.
Example
<?php class SimpleXmlStreamer extends \Prewk\XmlStreamer { public function processNode($xmlString, $elementName, $nodeIndex) { $xml = simplexml_load_string($xmlString); $something = (string)$xml->Something->SomethingElse->ReadThis; echo "$nodeIndex: Extracted string '$something' from parent node '$elementName'\n"; return true; } } $streamer = new SimpleXmlStreamer("myLargeXmlFile.xml"); if ($streamer->parse()) { echo "Finished successfully"; } else { echo "Couldn't find root node"; }
Advanced example
To improve performance on DB inserts you can also make use of the chunkCompleted() method.
It gets called after a chunk of data was processed.
<?php class SimpleXmlStreamer extends \Prewk\XmlStreamer { protected $pdo; protected $sql = array(); protected $values = array(); /** * Called after the constructor completed class setup */ public function init() { $this->pdo = new PDO('mysql:host=localhost;dbname=test', 'user','pass'); } public function processNode($xmlString, $elementName, $nodeIndex) { $xml = simplexml_load_string($xmlString); $this->sql[] = '(?,?,?)'; $this->values[] = (string)$xml->name; $this->values[] = (string)$xml->email; $this->values[] = (string)$xml->phone; } /** * Called after a file chunk was processed (16KB by default, see constructor) */ public function chunkCompleted() { if($this->sql===array()) { return; } $command = $this->pdo->prepare('INSERT INTO mytable VALUES '.implode(',',$this->sql)); $command->execute($this->values); $this->sql = $this->values = array(); } }
统计信息
- 总下载量: 45.79k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 52
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-04-04