kherge/xml

此软件包已被弃用,不再维护。作者建议使用sabre/xml软件包。

提供了一种方便的方式来访问非常大的XML文档中的节点。

1.1.1 2016-12-31 22:40 UTC

This package is auto-updated.

Last update: 2021-12-07 01:40:34 UTC


README

Build Status Packagist Packagist Pre Release

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倍。这种情况有几个重要的原因。

  1. 跟踪每个节点的路径。
  2. 处理数据抽象的方式。
  3. 读取具有属性的节点。

虽然25倍慢听起来很多,但如果你直接使用XMLReader,你还需要重新实现这个库的多少部分。这个库的吸引力在于它的易于使用。此外,这个库还设计得可以替换为你的实现(例如节点表示类)。

你需要自己进行基准测试,但使用这个库可能会让你达到平衡。但是,如果你发现任何优化的空间,请打开一个工单,或者更好的是,提交一个拉取请求!

许可证

此库可在MIT和Apache 2.0许可证下使用。