larafull / ymlparser
Laravel 的 YML (Yandex XML 格式) 解析器
v1.2.0
2018-10-03 12:42 UTC
Requires
- php: >=7.1
- ext-mbstring: *
- ext-xmlrpc: *
Requires (Dev)
- phpunit/phpunit: 4.6.*
This package is not auto-updated.
Last update: 2024-09-27 15:13:04 UTC
README
适用于 Laravel 5.5+ 的针对 yml(yandex.market.ru) 文件的解析器。
从 https://github.com/serkin/ymlparser 分支而来
感谢 Serkin Alexander!
YMLParser 默认包含两个针对不同文件大小的驱动程序
- XMLReader - 用于中等和大型 XML 文件
- SimpleXML - 用于小型 XML 文件
Laravel YML 解析注意事项
当前步骤不需要 Laravel,但此软件包的开发正在进行中。
安装
软件包需要 php-xmlrpc 和 php-mbstring
sudo apt-get install php-xmlrpc php-mbstring
通过 Composer 需求包
composer require larafull/ymlparser:dev-master
使用方法
Laravel 等中的远程 YML 解析
自 v1.2 版本起,提供远程解析功能
use YMLParser\YMLParser; use YMLParser\Driver\XMLReader; $url = 'https://somedomain/somefolder/somefile.yml.xml'; $parser = new YMLParser(new XMLReader); $parser->open($url); $offers = $parsers->getOffers(); // etc
从文件中获取所有报价
use YMLParser\YMLParser; use YMLParser\Driver\XMLReader; $filename = '/path/to/file/file.xml'; // User XMLReader driver large xml files or SimpleXML driver for small xml files. $parser = new YMLParser(new 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 的匿名函数
use YMLParser\YMLParser; use YMLParser\Driver\SimpleXML; $filename = '/path/to/file/file.xml'; $parser = new YMLParser(new SimpleXML); $parser->open($filename); // Anonnymous filter function example: $filter = function($element) { return !empty($element['url']); }; $offers = iterator_to_array($parser->getOffers($filter)); // Let's dump first offer via Laravel dump(): dump($offers[0]['params']);
依赖项
- PHP: >= 7.1
- xmlrpc 扩展
- mbstring 扩展
分支后的修改
DriverInterface 可以更改。为了检查能力,将添加静态变量。
创建从 YML 创建模型的迁移将在以后提供。
贡献和你的想法
创建拉取请求或/和在这里发消息
Telegram: @vvmspace
Twitter: @vvmspace
Instagram: https://instagram.com/insta.tagil
电子邮件: vvmspace@gmail.com