承接 domattr/exml 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 domattr/exml 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 140
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-07-12