innmind / xml
Library to abstract xml manipulation
7.7.0
2024-06-26 08:00 UTC
Requires
- php: ~8.2
- innmind/filesystem: ~7.0
- innmind/immutable: ~5.7
Requires (Dev)
- innmind/black-box: ~5.5
- innmind/coding-standard: ~2.0
- phpunit/phpunit: ~10.2
- vimeo/psalm: ~5.12
README
This library is an abstraction on top of the \DOM*
classes of php, the goal is to clarify the interfaces of each node.
The big differences are that each node is immutable and is only aware of its children (instead of being aware of its parent and siblings). This can allow you to extract a whole subtree and use it to build a new tree without affecting the original one.
Important: you must use vimeo/psalm
to make sure you use this library correctly.
Installation
composer require innmind/xml
Usage
use Innmind\Xml\{ Reader\Reader, Node, }; use Innmind\Filesystem\File\Content; use Innmind\Immutable\Maybe; $read = Reader::of(); $tree = $read( Content\Lines::ofContent('<root><foo some="attribute"/></root>') ); // Maybe<Node>
Extract informations out of a node
The library use the visitor pattern to give access back to the raw xml library. For example you can access the parent of a node like this:
use Innmind\Xml\Visitor\ParentNode; $parent = ParentNode::of($childNode)($treeToSearchIn); // Maybe<Node>
Here is the full list of visitors you have access to by default: