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.
composer require innmind/xml
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>
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: