findologic / libflexport
FINDOLOGIC XML和CSV数据导出工具包
v3.1.1
2024-01-17 11:37 UTC
Requires
- php: ^8.1
- ext-dom: *
- ext-mbstring: *
- findologic/xml-export-schema: ^v2.2.0
Requires (Dev)
- nikic/php-parser: ^4.15
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-17 13:02:33 UTC
README
目录
概述
本项目提供了一种根据FINDOLOGIC导出模式生成XML和CSV导出库。
- XML https://docs.findologic.com/doku.php?id=xml_export_documentation:XML_2_format
- CSV https://docs.findologic.com/doku.php?id=csv_export_documentation:csv_2_format
- 请注意,CSV支持仍然相对较新。请将其视为beta版本。
导出建议
FINDOLOGIC推荐使用XML导出。XML更易于阅读,并且与CSV导出相比有一些优点,如
- 没有编码问题,因为XML响应中提供了编码属性
<?xml version="1.0" encoding="UTF-8"?>
。 - 验证更可靠。
- 使用
<![CDATA[...]]>
-标签简单转义内容。 - 标准化结构。
- 通过url中的
start
和count
参数动态从数据库中提取产品。 - 由于分页,XML没有文件大小限制。
- 每个产品使用多个组。
CSV的关键优势是可以使用比XML多得多的组。另一方面
- 组仅调节可见性 - 无法显示每个组的不同值。
- 如果将非UTF-8数据输入其中,格式容易出错。
- 总导出大小受文件大小限制,而XML分页理论上允许任意大小的导出。
限制
目前,仅支持UTF-8编码的输入文本。要使用此库与其它类型编码,需要以下其中之一
- 在传递给
libflexport
之前将所有文本转换为UTF-8。 - 使用XML导出器并修改库以更改XML头部以包含所需的编码。
- FINDOLOGIC能够处理大多数编码,但仅限于XML。
基本用法
设置
- 使用
composer require findologic/libflexport
将作为composer依赖项包含 - 将
./vendor/autoload.php
加载到项目中
XML导出
require_once './vendor/autoload.php'; use FINDOLOGIC\Export\Exporter; $exporter = Exporter::create(ExporterType::XML); $item = $exporter->createItem('123'); $item->addName('Test'); $item->addUrl('http://example.org/test.html'); $item->addPrice(13.37); // Alternative long form: // $name = new Name(); // $name->setValue('Test'); // $item->setName($name); // $url = new Url(); // $url->setValue('http://example.org/test.html'); // $item->setUrl($url); // $price = new Price(); // $price->setValue(13.37); // $item->setPrice($price); $xmlOutput = $exporter->serializeItems([$item], 0, 1, 1);
CSV导出
require_once './vendor/autoload.php'; use FINDOLOGIC\Export\Exporter; $exporter = Exporter::create(ExporterType::CSV); $item = $exporter->createItem('123'); $item->addPrice(13.37); $item->addName('Test'); $item->addUrl('http://example.org/test.html'); // Alternative long form: // $name = new Name(); // $name->setValue('Test'); // $item->setName($name); // $url = new Url(); // $url->setValue('http://example.org/test.html'); // $item->setUrl($url); // $price = new Price(); // $price->setValue(13.37); // $item->setPrice($price); // Date is mandatory for CSV. $item->addDateAdded(new \DateTime()); $csvOutput = $exporter->serializeItems([$item], 0, 1, 1);
示例
有关更具体的示例,请查看示例目录。
兼容性
以下是libflexport主要版本的概述。版本号通常遵循语义版本控制原则。
只要存在执行此操作的基础设施,所有版本很可能都将保持可用。
贡献者
查看贡献指南。