findologic/libflexport

FINDOLOGIC XML和CSV数据导出工具包

v3.1.1 2024-01-17 11:37 UTC

README

Github Actions Latest Stable Version Code Climate Codecov

目录

  1. 概述
  2. 导出建议
  3. 限制
  4. 基本用法
    1. 设置
    2. XML导出
    3. CSV导出
  5. 示例
  6. 兼容性
  7. 贡献者

概述

本项目提供了一种根据FINDOLOGIC导出模式生成XML和CSV导出库。

导出建议

FINDOLOGIC推荐使用XML导出。XML更易于阅读,并且与CSV导出相比有一些优点,如

  • 没有编码问题,因为XML响应中提供了编码属性 <?xml version="1.0" encoding="UTF-8"?>
  • 验证更可靠。
  • 使用<![CDATA[...]]>-标签简单转义内容。
  • 标准化结构。
  • 通过url中的startcount参数动态从数据库中提取产品。
  • 由于分页,XML没有文件大小限制。
  • 每个产品使用多个组。

CSV的关键优势是可以使用比XML多得多的组。另一方面

  • 组仅调节可见性 - 无法显示每个组的不同值。
  • 如果将非UTF-8数据输入其中,格式容易出错。
  • 总导出大小受文件大小限制,而XML分页理论上允许任意大小的导出。

限制

目前,仅支持UTF-8编码的输入文本。要使用此库与其它类型编码,需要以下其中之一

  • 在传递给libflexport之前将所有文本转换为UTF-8。
  • 使用XML导出器并修改库以更改XML头部以包含所需的编码。
    • FINDOLOGIC能够处理大多数编码,但仅限于XML。

基本用法

设置

  1. 使用composer require findologic/libflexport将作为composer依赖项包含
  2. ./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主要版本的概述。版本号通常遵循语义版本控制原则。

只要存在执行此操作的基础设施,所有版本很可能都将保持可用。

贡献者

查看贡献指南