snono / stream-parser
此包的最新版本(dev-master)没有可用的许可信息。
将xml、json、csv内容转换为数组
dev-master
2019-11-19 19:09 UTC
This package is not auto-updated.
Last update: 2024-10-02 19:40:19 UTC
README
Laravel框架的Stream解析器
注意: 此存储库包含将XML文件转换为数组的核心代码。
安装
composer require snono/stream-parser
推荐用法
尽可能将回调执行委托出去,以避免阻塞文档读取
实际输入/代码/输出示例
XML
<Products Version="1.00"> <Product> <ProductId>31774</ProductId> <Name><![CDATA[Giliola Mor Pembe Detaylı Çocuk Spor Ayakkabı]]></Name> <ShortDescription/> <MetaTitle>Giliola Mor Pembe Detaylı Çocuk Spor Ayakkabı</MetaTitle> <SKU>ANT-CCK-CSP-133124</SKU> <Gtin>3177431774317</Gtin> <AlisFiyati>40.00</AlisFiyati> <Price>40.00</Price> <Published>True</Published> <ProductCombinations> <ProductCombination> <ProductCombinationId>...</ProductCombinationId> <SKU>...</SKU> <Gtin>3031774317743</Gtin> <StockQuantity>...</StockQuantity> <ProductAttributes>...</ProductAttributes> </ProductCombination> <ProductCombination> <ProductCombinationId>1782578</ProductCombinationId> <SKU>ANT-CCK-CSP-133124</SKU> <Gtin>3331774317743</Gtin> <StockQuantity>0</StockQuantity> <ProductAttributes> <ProductAttribute> <Name>Çocuk Numara</Name> <Value>33</Value> </ProductAttribute> </ProductAttributes> </ProductCombination> </ProductCombinations> <Pictures> <Picture> <PictureUrl>https://www.xmlcim.com/image/catalog/erbilden/Y5Lnj9L9HVD15ciAS1r2xkSAospZcG3Qmk1fY.jpg</PictureUrl> </Picture> <Picture> <PictureUrl>https://www.xmlcim.com/image/catalog/erbilden/FOnQWf6dPYqTDSDqhMcUhwSIIHoI57oolYj1V.jpg</PictureUrl> </Picture> </Pictures> <Categories> <Category> <CategoryId>288</CategoryId> <Name>Çocuk Spor</Name> <CategoryPath>...</CategoryPath> </Category> </Categories> <Manufacturers> <Manufacturer> <Id>7</Id> <Name><![CDATA[Erbilden]]></Name> </Manufacturer> </Manufacturers> <ProductSameColors/> </Product> </Products>
use Snono\StreamParser\XMLParser; $objXML = new XMLParser(); $arr = $objXML->setUrl('https:///product.xml') ->xmlParser() ->mapping( array( 'Products' => array( 'Product' => array( 'id_product' => 'ProductId', 'sku' => 'SKU', 'qty' => 'StockQuantity', 'title' => 'MetaTitle', 'images' => 'Pictures.Picture.PictureUrl', 'category' => 'Categories.Category.CategoryId:Name:CategoryPath', 'manufacturer' => 'Manufacturers.Manufacturer', 'productCombinations' => 'ProductCombinations.ProductCombination.StockQuantity:SKU:ProductCombinationId:ProductAttributes', ) ) ) ) ->toArray();
[
{
"id_product": "31774",
"sku": "ANT-CCK-CSP-133124",
"qty": "7",
"title": "Giliola Mor Pembe Detaylı Çocuk Spor Ayakkabı",
"images": [
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/Y5Lnj9L9HVD15ciAS1r2xkSAospZcG3Qmk1fY.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/FOnQWf6dPYqTDSDqhMcUhwSIIHoI57oolYj1V.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/4JYDn1jVXJdLHaUaQ11QyX0rQjLOHk4seRfF3.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/k6oVbvFRlxd3SdQCCcZLovODTi4V5xkZutrzj.jpg"
}
],
"category": {
"CategoryId": "288",
"Name": "Çocuk Spor",
"CategoryPath": "Çocuk Ayakkabı >> Çocuk Spor"
},
"manufacturer": {
"Id": "7",
"Name": "Erbilden"
},
"productCombinations": [
{
"ProductCombinationId": "1782575",
"SKU": "ANT-CCK-CSP-133124",
"Gtin": "3031774317743",
"StockQuantity": "1",
"ProductAttributes": {
"ProductAttribute": {
"Name": "Çocuk Numara",
"Value": "30"
}
}
}
]
},
{
"id_product": "31763",
"sku": "ANT-CCK-CSP-133113",
"qty": "7",
"title": "Giliola Mor Çocuk Spor Ayakkabı ",
"images": [
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/xvspaJFco5uFRGJtjf3LG6wtVCWtQVYsENuBy.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/UfLqiVkJi6XzuBEdgGfZuxtfuHcLSJhlsgN3U.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/vR0fTLvE69rmScPQQ062z0kxp8oQzNMyHVUtG.jpg"
},
{
"PictureUrl": "https://www.xmlcim.com/image/catalog/erbilden/T5tphhfeCTYvFc5NzWVqHDB8XVRXJkWOYTOIw.jpg"
}
],
"category": {
"CategoryId": "288",
"Name": "Çocuk Spor",
"CategoryPath": "Çocuk Ayakkabı >> Çocuk Spor"
},
"manufacturer": {
"Id": "7",
"Name": "Erbilden"
},
"productCombinations": [
{
"ProductCombinationId": "1782515",
"SKU": "ANT-CCK-CSP-133113",
"Gtin": "2631763317633",
"StockQuantity": "1",
"ProductAttributes": {
"ProductAttribute": {
"Name": "Çocuk Numara",
"Value": "26"
}
}
}
]
}
]
数据源两种类型
使用以下代码从URL链接获取数据
$objXML->setUrl('https:///product.xml');
或从本地文件加载数据
$objXML->setFileName('./tmp/product.xml');
返回所有数据而不进行映射
$arr = $objXML->getContent();