edujugon / xml-mapper
适用于 Laravel 和 PHP 的 XMLMapper
Requires
- illuminate/support: ^5.0
Requires (Dev)
- phpunit/phpunit: ~4.0
README
您正在处理 XML 数据吗?那么这个包就是为您准备的。这是与 XML 数据交互的最简单 API。
安装
在控制台输入
composer require edujugon/xml-mapper
Laravel 5.*
Laravel 5.5 或更高版本?
那么您不需要注册或添加别名,此包使用包自动发现功能,通过 Composer 安装后应该立即可用。
(Laravel < 5.5) 通过将其添加到提供者数组中注册 XMLMapper 服务。
'providers' => array( ... Edujugon\XMLMapper\Providers\XMLMapperServiceProvider::class )
(Laravel < 5.5) 让我们添加别名门面,将其添加到别名数组中。
'aliases' => array( ... 'XMLMapper' => Edujugon\XMLMapper\Facades\XMLMapper::class, )
使用示例
$mapper = new Edujugon\XMLMapper\XMLMapper(); $mapper->loadXML($xmlData);
或
$mapper = new Edujugon\XMLMapper\XMLMapper($xmlData);
使用 Laravel 门面
$mapper = XMLMapper::loadXML($xmlData);
别忘了在类顶部使用门面 use 语句:
use Edujugon\XMLMapper\Facades\XMLMapper;
获取值
您必须知道标签路径。否则您应使用 findValue。
$value = $mapper->getvalue(['first-tag','second-tag','my-tag']);
上述示例获取名为 my-tag 的标签的值。
如果没有传递参数给方法,则查找第一个(父)标签的值。
获取属性
您必须知道标签路径。否则您应使用 findAttribute。
$att = $mapper->getAttribute('id',['first-tag','second-tag','my-tag']);
上述示例返回 my-tag 中的 id 属性的值。
获取元素
获取一个新的 XMLMapper 实例,但以 tag-name 元素作为基础 XML。
$newXmlMapper = $mapper->getElement('tag-name');
获取元素
根据 tag-name XML 元素获取一个 XMLMapper 对象数组。
$arrayOFXmlMappers = $mapper->getElement('tag-name');
查找值
$value = $mapper->findValue('my-tag');
它查找名为 my-tag 的第一个标签并返回其值。
查找属性
获取标签的属性值。
$att = $mapper->findAttribute('my-att','my-tag');
它查找名为 my-tag 的第一个标签,然后尝试查找作为属性的 my-att 并返回其值。
如果没有传递标签,则查找与提供的属性名匹配的第一个属性。
$att = $mapper->findAttribute('my-att');
按条件查找属性
遍历所有元素,尝试匹配条件。找到后,返回提供的属性值。
$att = $mapper->findAttributeWhere('my-att',['id'=>1,'dev'=> 'edu',['name','!=','john']])
查找标签的属性
获取一个对象,其中包含这些属性作为对象属性。首先搜索标签,然后检索请求的属性。
$obj = $mapper->findAttributes(['att-1','att-2'],'my-tag') $name = $obj->name; $dev = $obj->dev;
如果没有提供标签,则获取具有这些属性的第一个标签并返回值。
按条件查找属性
遍历所有元素,尝试匹配条件。找到后,返回一个具有这些属性作为对象属性的对象。
$obj = $mapper->findAttributesWhere(['att-1','att-2'],['dev'=> 'edu',['name','!=','john']])
查找标签的所有属性
获取一个具有标签属性作为属性的属性对象数组。
$list = $mapper->findAllAttributesOf('tag-name');
按条件查找标签的所有属性
获取一个具有属性作为属性的对象数组,这些属性与提供的标签名和条件匹配。
$list = $mapper->findAllAttributesOfWhere('tag-name',['dev'=> 'edu',['name','!=','john']])
where 操作符
允许的 where 语法。
默认
- key => value 对。将被视为 ==
['id' => 1,'name' => 'my name']
自定义
- !=
- !==
- ===
- contains
- containsCaseInsensitive
[['name','!=','john'],['id','!=',7]]
[['name','contains','john']]
它们可以组合使用
['id' => 1,['name','!=','john']]
替换标签名
您可以轻松地将任何标签名替换为 XML 以便于访问。
$mapper->replaceTagName( [ 'a10:author' => 'author', 'a10:name' => 'name', 'a10:updated' => 'updated' ] );
上述代码片段替换所有与键匹配的标签,并将它们的值设置为新的标签名。同时根据新的 XML 更新底层对象。
将新的 XML 合并到现有的 XML 中
您可以轻松地将新的 XML 合并到现有的 XML 中。将其设置为提供的标签的子标签。
$mapper->mergeXML($newXml, 'desiredParentTag');
将当前 XML 用自定义标签包装
$mapper->wrapWith('tagName');
添加属性
$mapper-addAttributes(['attr1' => 'value1', 'attr2' => 'value2']); or $mapper-addAttributes(['attr1' => 'value1', 'attr2' => 'value2'], 'tagName');
享受吧 :)