serkin/ymlparser

yml(yandex.market.ru) 文件解析器

v1.1.2 2015-04-30 11:41 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:43:45 UTC


README

yml(yandex.market.ru) 文件的解析器。

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

YMLParser 默认使用两种类型的解析

  • XMLReader - 用于中等和大型的 XML 文件
  • SimpleXML - 用于小型的 XML 文件

安装

通过 Composer

composer require serkin/ymlparser ~1.1

使用

从文件中获取所有报价

include 'vendor/autoload.php';

$filename = '/path/to/file/file.xml';

//   XMLReader driver - for medium and large xml files
//   SimpleXML driver - for small xml files

$parser = new \YMLParser\YMLParser(new \YMLParser\Driver\XMLReader);
$parser->open($filename); // throws \Exception if $filename doesn't exist or empty
foreach($parser->getOffers() as $offer): // YMLParser::getOffers() returns \Generator
    echo $offer['url'];
endforeach;

从经过筛选的文件中获取所有报价

YMLParser::getOffers() 可以接受一个筛选函数作为参数。筛选函数应该是一个匿名函数,返回 true 或 false

include 'vendor/autoload.php';

$filename = '/path/to/file/file.xml';

$parser = new \YMLParser\YMLParser(new \YMLParser\Driver\SimpleXML);
$parser->open($filename);

// We want offers only with not empty url subelements
$filter = function($element) { return !empty($element['url']); }; 
$offers = iterator_to_array($parser->getOffers($filter));

// Let's get all params from first offer if they are exist
foreach($offers[0]['params'] as $param):
	echo $param['name'] . ' - ' . $param['value'];
endforeach;

依赖

  • PHP: >= 5.5
  • xmlrpc 扩展
  • mbstring 扩展

贡献

  • 发送拉取请求

许可

  • MIT

待办事项

  • getCurrencies()
  • setDefaultCurrency()
  • 根据设置的默认货币计算报价

测试

phpunit

可扩展性

您可以创建自己的驱动。您需要在您的类中实现 YMLParser\Driver\DriverInterface 接口。