PHPackages                             huzhipan/php-xml-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. huzhipan/php-xml-parser

ActiveComposer-plugin[Parsing &amp; Serialization](/categories/parsing)

huzhipan/php-xml-parser
=======================

phpxml

60PHP

Since Nov 16Pushed 4y ago1 watchersCompare

[ Source](https://github.com/HUZHIPAN/php-xml-parser)[ Packagist](https://packagist.org/packages/huzhipan/php-xml-parser)[ RSS](/packages/huzhipan-php-xml-parser/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (3)DependenciesVersions (1)Used By (0)

Xml-Parser / XML解析器
===================

[](#xml-parser--xml解析器)

**xml-parser是一个基于php实现的xml解析器，不依赖于其他扩展或组件。实现phper友好的调用方式，只需要调用一个函数，即可完成对xml标签的解析**

> ps: 虽然是一次加载到内存中解析，但是性能方面完全不需要太过担心，测试2w行的xml代码解析时间是在1秒内。

✨使用方法
-----

[](#使用方法)

- 一、使用composer进行安装

    ```
    composer require huzhipan/php-xml-parser
    ```
- 二、使用包源码下面的autoload加载器 示例：

    ```
    // 不依赖composer等其他管理工具，更简洁
    require_once __DIR__ . '/src/autoload.php';

    use xml\parser\PHPXmlParser;
    // 返回Node类实例（节点树）
    $node = PHPXmlParser::parseXmlToObject('');
    // 返回php数组，按xml层级组装
    $node = PHPXmlParser::parseXmlToArray("");
    ```
- `examples/` 目录下有调用示例

⌛️ 实现细节
-------

[](#️-实现细节)

**词法分析** -&gt; **语法分析** -&gt; **语义解释** -&gt; **渲染节点**

1. 将xml字符串的每一位抽象成流单元，迭代不断向后推进
2. 使用有限状态机提取token（标识符）,支持的词组可以查看代码中的TokenType类
3. 对标识符列表进行语法组装，以``标识一条语句的结束，类似于编程语言中的`;`表示一条语句的结束，中间的文本部分提取为标签的text值
4. 支持的语句有*标签声明*、*属性赋值*、*结束语句*等，即形式良好的XML格式
5. 渲染节点时使用深度优先遍历，即在标签声明语句执行时将节点压栈，标签结束时出栈，后续所有声明都以栈顶节点作为父节点

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity28

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/19991764d7c84dd1f3b457c3057e9d300504e0fd6989813c0b0f84bb31fbe6af?d=identicon)[HUZHIPAN](/maintainers/HUZHIPAN)

---

Top Contributors

[![HUZHIPAN](https://avatars.githubusercontent.com/u/52950801?v=4)](https://github.com/HUZHIPAN "HUZHIPAN (2 commits)")

---

Tags

phpxmlxml-parser

### Embed Badge

![Health badge](/badges/huzhipan-php-xml-parser/health.svg)

```
[![Health](https://phpackages.com/badges/huzhipan-php-xml-parser/health.svg)](https://phpackages.com/packages/huzhipan-php-xml-parser)
```

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M284](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M345](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
