kherge / xml
1.1.1
2016-12-31 22:40 UTC
Requires
- php: >=5.6
- ext-libxml: *
- ext-xmlreader: *
Requires (Dev)
- kherge/file-manager: ^2.6
README
XML
提供了一种开发者友好的方式来访问非常大的XML文档中的节点。
用法
<?php use KHerGe\XML\FileReaderFactory; // Open an existing and very large XML file. $reader = (new FileReaderFactory())->open('/path/to/large.xml'); // Iterate through each node in the XML document. foreach ($reader as $path => $node) { if ($node->isElement()) { echo $path, ' = ', $node->getValue(), "\n"; } }
文档
- FileReaderFactory - 负责创建新的FileReader实例。这是打开XML文件进行读取的主要方式。示例用法基本上是你需要的。
- NodeInterface - 表示从XML文档中读取的节点。你将主要关注接口中的方法和定义的常量,而不是常量。这些常量主要用于使用标准节点表示类的替代实现。
要求
- PHP 5.6+
- libxml
- xmlreader
安装
composer require kherge/xml
性能
以下是一个例子。
XMLReader
<?php $reader = new XMLReader(); $reader->open('/path/to/large.xml'); while ($reader->read());
XML
<?php use KHerGe\XML\FileReaderFactory; $reader = (new FileReaderFactory())->open('/path/to/large.xml'); foreach ($reader as $element);
如果我们简单地对所有元素进行流式传输而不执行任何操作,这个库的性能将比XMLReader
慢大约25倍。这种情况有几个重要的原因。
- 跟踪每个节点的路径。
- 处理数据抽象的方式。
- 读取具有属性的节点。
虽然25倍慢听起来很多,但如果你直接使用XMLReader,你还需要重新实现这个库的多少部分。这个库的吸引力在于它的易于使用。此外,这个库还设计得可以替换为你的实现(例如节点表示类)。
你需要自己进行基准测试,但使用这个库可能会让你达到平衡。但是,如果你发现任何优化的空间,请打开一个工单,或者更好的是,提交一个拉取请求!
许可证
此库可在MIT和Apache 2.0许可证下使用。