edujugon/xml-mapper

适用于 Laravel 和 PHP 的 XMLMapper

1.6.0 2018-05-14 15:58 UTC

This package is auto-updated.

Last update: 2024-09-19 09:57:03 UTC


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']])

检查允许的 where 操作符

查找标签的属性

获取一个对象,其中包含这些属性作为对象属性。首先搜索标签,然后检索请求的属性。

$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']])

检查允许的 where 操作符

查找标签的所有属性

获取一个具有标签属性作为属性的属性对象数组。

$list = $mapper->findAllAttributesOf('tag-name');

按条件查找标签的所有属性

获取一个具有属性作为属性的对象数组,这些属性与提供的标签名和条件匹配。

$list = $mapper->findAllAttributesOfWhere('tag-name',['dev'=> 'edu',['name','!=','john']])

检查允许的 where 操作符

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');

享受吧 :)