domattr/exml
Composer 安装命令:
composer require domattr/exml
包简介
A simple XML reader that converts markup to objects
README 文档
README
A simple XML parser that converts XML to an object regardless of namespace.
Installation
This package can be installed via composer/packagist
composer require domattr/exml
Usage
To read and parse XML we simply use the read() method
$xml = '<?xml version="1.0" encoding="utf-8?><Customer><Name>Matt</Name></Customer'; $obj = Domattr\Exml\Exml::read($xml);
Using the Object
The returned object will contain all data, attributes & children. Below is a simple example of the raw XML and resulting object:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <github:Repo> <RepoName>Exml</RepoName> <UserInformation> <Name>Matt Lake</Name> <Role>Developer</Role> </UserInformation> <Url>https://github.com/mattlake/exml</Url> <Status>Public</Status> </github:Repo> </soap:Body> </soap:Envelope>
object(Domattr\Exml\Container)#4 (7) { ["version":"Domattr\Exml\Container":private]=> string(3) "1.0" ["encoding":"Domattr\Exml\Container":private]=> string(5) "utf-8" ["namespace":"Domattr\Exml\Element":private]=> string(4) "soap" ["tag":"Domattr\Exml\Element":private]=> string(8) "Envelope" ["attributes":"Domattr\Exml\Element":private]=> array(3) { [0]=> object(Domattr\Exml\Attribute)#5 (2) { ["key":"Domattr\Exml\Attribute":private]=> string(9) "xmlns:xsi" ["value":"Domattr\Exml\Attribute":private]=> string(41) "http://www.w3.org/2001/XMLSchema-instance" } [1]=> object(Domattr\Exml\Attribute)#6 (2) { ["key":"Domattr\Exml\Attribute":private]=> string(9) "xmlns:xsd" ["value":"Domattr\Exml\Attribute":private]=> string(32) "http://www.w3.org/2001/XMLSchema" } [2]=> object(Domattr\Exml\Attribute)#7 (2) { ["key":"Domattr\Exml\Attribute":private]=> string(10) "xmlns:soap" ["value":"Domattr\Exml\Attribute":private]=> string(41) "http://schemas.xmlsoap.org/soap/envelope/" } } ["children":"Domattr\Exml\Element":private]=> array(1) { ["Body"]=> object(Domattr\Exml\Element)#9 (5) { ["namespace":"Domattr\Exml\Element":private]=> string(4) "soap" ["tag":"Domattr\Exml\Element":private]=> string(4) "Body" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(1) { ["Repo"]=> object(Domattr\Exml\Element)#11 (5) { ["namespace":"Domattr\Exml\Element":private]=> string(6) "github" ["tag":"Domattr\Exml\Element":private]=> string(4) "Repo" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(4) { ["RepoName"]=> object(Domattr\Exml\Element)#16 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(8) "RepoName" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(0) { } ["value":"Domattr\Exml\Element":private]=> string(4) "Exml" } ["UserInformation"]=> object(Domattr\Exml\Element)#17 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(15) "UserInformation" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(2) { ["Name"]=> object(Domattr\Exml\Element)#20 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(4) "Name" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(0) { } ["value":"Domattr\Exml\Element":private]=> string(9) "Matt Lake" } ["Role"]=> object(Domattr\Exml\Element)#21 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(4) "Role" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(0) { } ["value":"Domattr\Exml\Element":private]=> string(9) "Developer" } } ["value":"Domattr\Exml\Element":private]=> NULL } ["Url"]=> object(Domattr\Exml\Element)#19 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(3) "Url" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(0) { } ["value":"Domattr\Exml\Element":private]=> string(32) "https://github.com/mattlake/exml" } ["Status"]=> object(Domattr\Exml\Element)#18 (5) { ["namespace":"Domattr\Exml\Element":private]=> NULL ["tag":"Domattr\Exml\Element":private]=> string(6) "Status" ["attributes":"Domattr\Exml\Element":private]=> array(0) { } ["children":"Domattr\Exml\Element":private]=> array(0) { } ["value":"Domattr\Exml\Element":private]=> string(6) "Public" } } ["value":"Domattr\Exml\Element":private]=> NULL } } ["value":"Domattr\Exml\Element":private]=> NULL } } ["value":"Domattr\Exml\Element":private]=> NULL }
Using the object
The data within the object can be accessed like so:
$obj = Exml::read($xml); // Get the username $username = $obj->Body->Repo->UserInformation->Name->value();
domattr/exml 适用场景与选型建议
domattr/exml 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 140 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 07 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 domattr/exml 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 domattr/exml 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 140
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-07-12